From f55b0c5e30c04f7b6630f3d860e8ef2901a72b6c Mon Sep 17 00:00:00 2001 From: hiro Date: Fri, 11 May 2007 07:34:25 +0000 Subject: made a workaround for GTK+ bug #56070. git-svn-id: svn://sylpheed.sraoss.jp/sylpheed/trunk@1690 ee746299-78ed-0310-b773-934348b2243d --- src/mainwindow.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'src/mainwindow.c') diff --git a/src/mainwindow.c b/src/mainwindow.c index 2d979873..742e88d5 100644 --- a/src/mainwindow.c +++ b/src/mainwindow.c @@ -1872,7 +1872,7 @@ static SensitiveCond main_window_get_current_state(MainWindow *mainwin) void main_window_set_toolbar_sensitive(MainWindow *mainwin) { SensitiveCond state; - gboolean sensitive; + gboolean sensitive, prev_sensitive; gint n; gint i = 0; @@ -1924,8 +1924,18 @@ void main_window_set_toolbar_sensitive(MainWindow *mainwin) n = sizeof(entry) / sizeof(entry[0]); for (i = 0; i < n; i++) { if (entry[i].widget) { + prev_sensitive = + GTK_WIDGET_IS_SENSITIVE(entry[i].widget); sensitive = ((entry[i].cond & state) == entry[i].cond); - gtk_widget_set_sensitive(entry[i].widget, sensitive); + if (prev_sensitive != sensitive) { + /* workaround for GTK+ bug (#56070) */ + if (!prev_sensitive) + gtk_widget_hide(entry[i].widget); + gtk_widget_set_sensitive(entry[i].widget, + sensitive); + if (!prev_sensitive) + gtk_widget_show(entry[i].widget); + } } } } -- cgit v1.2.3