Skip to content

Commit aa00a38

Browse files
author
Rik Wehbring
committed
Reduce flicker when adding new Calendar record caused by forcing clist_row_selected to 0
1 parent 0b71824 commit aa00a38

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

datebook_gui.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* $Id: datebook_gui.c,v 1.234 2010/10/14 04:47:04 rikster5 Exp $ */
1+
/* $Id: datebook_gui.c,v 1.235 2010/10/15 14:26:03 rikster5 Exp $ */
22

33
/*******************************************************************************
44
* datebook_gui.c
@@ -2971,8 +2971,8 @@ static void cb_add_new_record(GtkWidget *widget, gpointer data)
29712971

29722972
free_CalendarEvent(&new_cale);
29732973

2974-
datebook_update_clist();
29752974
highlight_days();
2975+
datebook_update_clist();
29762976

29772977
/* Don't return to modified record if search gui active */
29782978
if (!glob_find_id) {
@@ -3513,7 +3513,7 @@ static void cb_clist_selection(GtkWidget *clist,
35133513
return;
35143514
}
35153515

3516-
static void set_date_labels(void)
3516+
static void set_date_label(void)
35173517
{
35183518
struct tm now;
35193519
char str[50];
@@ -3669,7 +3669,7 @@ static void cb_cal_changed(GtkWidget *widget,
36693669
{
36703670
int num;
36713671
unsigned int cal_year, cal_month, cal_day;
3672-
int mon_changed;
3672+
int day_changed, mon_changed, year_changed;
36733673
int b;
36743674
#ifdef EASTER
36753675
static int Easter=0;
@@ -3734,6 +3734,8 @@ static void cb_cal_changed(GtkWidget *widget,
37343734
return;
37353735
}
37363736

3737+
day_changed = mon_changed = year_changed = 0;
3738+
37373739
if (cal_year < 1903) {
37383740
cal_year=1903;
37393741
gtk_calendar_select_month(GTK_CALENDAR(main_calendar),
@@ -3745,21 +3747,21 @@ static void cb_cal_changed(GtkWidget *widget,
37453747
cal_month, 2037);
37463748
}
37473749

3748-
mon_changed=0;
37493750
if (current_year!=cal_year-1900) {
37503751
current_year=cal_year-1900;
3751-
mon_changed=1;
3752+
year_changed = 1;
3753+
mon_changed = 1;
37523754
}
37533755
if (current_month!=cal_month) {
37543756
current_month=cal_month;
3755-
mon_changed=1;
3757+
mon_changed = 1;
37563758
}
3759+
day_changed = (current_day!=cal_day);
37573760
current_day=cal_day;
37583761

37593762
jp_logf(JP_LOG_DEBUG, "cb_cal_changed, %02d/%02d/%02d\n",
37603763
cal_month,cal_day,cal_year);
37613764

3762-
set_date_labels();
37633765
/* Easter Egg Code */
37643766
#ifdef EASTER
37653767
if (((current_day==29) && (current_month==7)) ||
@@ -3773,10 +3775,14 @@ static void cb_cal_changed(GtkWidget *widget,
37733775
Easter=0;
37743776
}
37753777
#endif
3778+
37763779
if (mon_changed) {
37773780
highlight_days();
37783781
}
3779-
clist_row_selected = 0;
3782+
if (day_changed || mon_changed || year_changed) {
3783+
set_date_label();
3784+
clist_row_selected = 0;
3785+
}
37803786
datebook_update_clist();
37813787

37823788
/* Keep focus on calendar so that GTK accelerator keys for calendar
@@ -3930,7 +3936,7 @@ int datebook_refresh(int first, int do_init)
39303936
}
39313937
}
39323938
highlight_days();
3933-
set_date_labels();
3939+
set_date_label();
39343940

39353941
datebook_find();
39363942

0 commit comments

Comments
 (0)