Make automatic selection of appointments/events smarter
Keep item selection when an item is moved (e.g. by changing the start time or description). Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
This commit is contained in:
parent
feb059e8cf
commit
65b699f770
@ -48,11 +48,15 @@ int count, reg;
|
||||
*/
|
||||
static void do_storage(int day_changed)
|
||||
{
|
||||
struct day_item *day = ui_day_selitem();
|
||||
|
||||
day_process_storage(ui_calendar_get_slctd_day(), day_changed);
|
||||
ui_day_load_items();
|
||||
|
||||
if (day_changed)
|
||||
ui_day_sel_reset();
|
||||
else if (day)
|
||||
ui_day_set_selitem(day);
|
||||
}
|
||||
|
||||
static inline void key_generic_change_view(void)
|
||||
|
@ -772,6 +772,7 @@ int day_check_if_item(struct date);
|
||||
unsigned day_chk_busy_slices(struct date, int, int *);
|
||||
struct day_item *day_cut_item(long, int);
|
||||
int day_paste_item(struct day_item *, long);
|
||||
int day_get_position(struct day_item *);
|
||||
struct day_item *day_get_item(int);
|
||||
unsigned day_item_count(int);
|
||||
void day_edit_note(struct day_item *, const char *);
|
||||
@ -1042,6 +1043,8 @@ void todo_init_list(void);
|
||||
void todo_free_list(void);
|
||||
|
||||
/* ui-day.c */
|
||||
struct day_item *ui_day_selitem(void);
|
||||
void ui_day_set_selitem(struct day_item *);
|
||||
void ui_day_item_add(void);
|
||||
void ui_day_item_delete(unsigned);
|
||||
void ui_day_item_edit(void);
|
||||
|
15
src/day.c
15
src/day.c
@ -700,6 +700,21 @@ int day_paste_item(struct day_item *p, long date)
|
||||
return p->type;
|
||||
}
|
||||
|
||||
/* Returns the position corresponding to a given item. */
|
||||
int day_get_position(struct day_item *needle)
|
||||
{
|
||||
int n = 0;
|
||||
|
||||
VECTOR_FOREACH(&day_items, n) {
|
||||
struct day_item *p = VECTOR_NTH(&day_items, n);
|
||||
/* Compare pointers. */
|
||||
if (p->item.ev == needle->item.ev)
|
||||
return n;
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Returns a structure containing the selected item. */
|
||||
struct day_item *day_get_item(int item_number)
|
||||
{
|
||||
|
15
src/ui-day.c
15
src/ui-day.c
@ -38,6 +38,21 @@
|
||||
|
||||
struct day_item day_cut[38] = { {0, 0, {NULL}} };
|
||||
|
||||
struct day_item *ui_day_selitem(void)
|
||||
{
|
||||
if (day_item_count(0) <= 0)
|
||||
return NULL;
|
||||
|
||||
return day_get_item(listbox_get_sel(&lb_apt));
|
||||
}
|
||||
|
||||
void ui_day_set_selitem(struct day_item *day)
|
||||
{
|
||||
int n = day_get_position(day);
|
||||
if (n >= 0)
|
||||
listbox_set_sel(&lb_apt, n);
|
||||
}
|
||||
|
||||
/* Request the user to enter a new time. */
|
||||
static int day_edit_time(int time, unsigned *new_hour,
|
||||
unsigned *new_minute)
|
||||
|
Loading…
x
Reference in New Issue
Block a user