]>
Commit | Line | Data |
---|---|---|
1 | Index: mozilla/widget/src/gtk2/nsWindow.cpp | |
2 | =================================================================== | |
3 | RCS file: /cvsroot/mozilla/widget/src/gtk2/nsWindow.cpp,v | |
4 | retrieving revision 1.145.2.1 | |
5 | diff -d -u -p -r1.145.2.1 nsWindow.cpp | |
6 | --- mozilla/widget/src/gtk2/nsWindow.cpp 18 Aug 2005 08:11:23 -0000 1.145.2.1 | |
7 | +++ mozilla/widget/src/gtk2/nsWindow.cpp 24 Nov 2005 14:32:31 -0000 | |
8 | @@ -148,9 +148,9 @@ static gboolean visibility_notify_event_ | |
9 | GdkEventVisibility *event); | |
10 | static gboolean window_state_event_cb (GtkWidget *widget, | |
11 | GdkEventWindowState *event); | |
12 | -static void style_set_cb (GtkWidget *widget, | |
13 | - GtkStyle *previous_style, | |
14 | - gpointer data); | |
15 | +static void theme_changed_cb (GtkSettings *settings, | |
16 | + GParamSpec *pspec, | |
17 | + nsWindow *data); | |
18 | #ifdef __cplusplus | |
19 | extern "C" { | |
20 | #endif /* __cplusplus */ | |
21 | @@ -372,6 +372,10 @@ nsWindow::Destroy(void) | |
22 | mIsDestroyed = PR_TRUE; | |
23 | mCreated = PR_FALSE; | |
24 | ||
25 | + g_signal_handlers_disconnect_by_func(gtk_settings_get_default(), | |
26 | + (gpointer)G_CALLBACK(theme_changed_cb), | |
27 | + this); | |
28 | + | |
29 | // ungrab if required | |
30 | nsCOMPtr<nsIWidget> rollupWidget = do_QueryReferent(gRollupWindow); | |
31 | if (NS_STATIC_CAST(nsIWidget *, this) == rollupWidget.get()) { | |
32 | @@ -2434,8 +2438,16 @@ nsWindow::NativeCreate(nsIWidget | |
33 | G_CALLBACK(delete_event_cb), NULL); | |
34 | g_signal_connect(G_OBJECT(mShell), "window_state_event", | |
35 | G_CALLBACK(window_state_event_cb), NULL); | |
36 | - g_signal_connect(G_OBJECT(mShell), "style_set", | |
37 | - G_CALLBACK(style_set_cb), NULL); | |
38 | + | |
39 | + g_signal_connect_after(gtk_settings_get_default(), | |
40 | + "notify::gtk-theme-name", | |
41 | + G_CALLBACK(theme_changed_cb), this); | |
42 | + g_signal_connect_after(gtk_settings_get_default(), | |
43 | + "notify::gtk-key-theme-name", | |
44 | + G_CALLBACK(theme_changed_cb), this); | |
45 | + g_signal_connect_after(gtk_settings_get_default(), | |
46 | + "notify::gtk-font-name", | |
47 | + G_CALLBACK(theme_changed_cb), this); | |
48 | } | |
49 | ||
50 | if (mContainer) { | |
51 | @@ -3916,11 +3928,9 @@ window_state_event_cb (GtkWidget *widget | |
52 | ||
53 | /* static */ | |
54 | void | |
55 | -style_set_cb (GtkWidget *widget, GtkStyle *previous_style, gpointer data) | |
56 | +theme_changed_cb (GtkSettings *settings, GParamSpec *pspec, nsWindow *data) | |
57 | { | |
58 | - nsWindow *window = get_window_for_gtk_widget(widget); | |
59 | - if (window) | |
60 | - window->ThemeChanged(); | |
61 | + data->ThemeChanged(); | |
62 | } | |
63 | ||
64 | ////////////////////////////////////////////////////////////////////// |