diff options
author | Błażej Szczygieł <[email protected]> | 2016-03-28 18:20:19 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2016-10-21 09:51:38 +0200 |
commit | 299fd12061be8eec8cdb97b7b0afb0307ef86944 (patch) | |
tree | 3a2b8d71a30b587143e881760352aedd25245bd7 /applets/clock/clock.c | |
parent | 83cb1da7086ec9f901d5cc7eea2d9e2c569f8266 (diff) | |
download | mate-panel-299fd12061be8eec8cdb97b7b0afb0307ef86944.tar.bz2 mate-panel-299fd12061be8eec8cdb97b7b0afb0307ef86944.tar.xz |
clock: update tooltip only when new text is different
This can prevent problems with OpenGL on some drivers (see #397)
Diffstat (limited to 'applets/clock/clock.c')
-rw-r--r-- | applets/clock/clock.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/applets/clock/clock.c b/applets/clock/clock.c index 6bb0890b..17aeb172 100644 --- a/applets/clock/clock.c +++ b/applets/clock/clock.c @@ -674,6 +674,8 @@ update_clock (ClockData * cd) static void update_tooltip (ClockData * cd) { + char *tip; + char *old_tip; if (!cd->showdate) { struct tm *tm; char date[256]; @@ -681,7 +683,6 @@ update_tooltip (ClockData * cd) char *zone; time_t now_t; struct tm now; - char *tip; tm = localtime (&cd->current_time); @@ -714,17 +715,23 @@ update_tooltip (ClockData * cd) tip = g_strdup_printf (utf8, zone); - gtk_widget_set_tooltip_text (cd->panel_button, tip); g_free (utf8); - g_free (tip); } else { - if (cd->calendar_popup) - gtk_widget_set_tooltip_text (cd->panel_button, - _("Click to hide month calendar")); - else - gtk_widget_set_tooltip_text (cd->panel_button, - _("Click to view month calendar")); + if (cd->calendar_popup) + tip = _("Click to hide month calendar"); + else + tip = _("Click to view month calendar"); } + + /* Update only when the new tip is different. + * This can prevent problems with OpenGL on some drivers */ + old_tip = gtk_widget_get_tooltip_text (cd->panel_button); + if (g_strcmp0 (old_tip, tip)) + gtk_widget_set_tooltip_text (cd->panel_button, tip); + + g_free (old_tip); + if (!cd->showdate) + g_free (tip); } static void |