View | Details | Raw Unified | Return to bug 92467
Collapse All | Expand All

(-)widget/src/gtk2/nsWindow.cpp (-9 / +19 lines)
Lines 148-156 Link Here
148
                                           GdkEventVisibility *event);
148
                                           GdkEventVisibility *event);
149
static gboolean window_state_event_cb     (GtkWidget *widget,
149
static gboolean window_state_event_cb     (GtkWidget *widget,
150
                                           GdkEventWindowState *event);
150
                                           GdkEventWindowState *event);
151
static void     style_set_cb              (GtkWidget *widget,
151
static void     theme_changed_cb          (GtkSettings *settings,
152
                                           GtkStyle *previous_style,
152
                                           GParamSpec *pspec,
153
                                           gpointer data);
153
                                           nsWindow *data);
154
#ifdef __cplusplus
154
#ifdef __cplusplus
155
extern "C" {
155
extern "C" {
156
#endif /* __cplusplus */
156
#endif /* __cplusplus */
Lines 372-377 Link Here
372
    mIsDestroyed = PR_TRUE;
372
    mIsDestroyed = PR_TRUE;
373
    mCreated = PR_FALSE;
373
    mCreated = PR_FALSE;
374
374
375
    g_signal_handlers_disconnect_by_func(gtk_settings_get_default(),
376
                                         (gpointer)G_CALLBACK(theme_changed_cb),
377
                                         this);
378
375
    // ungrab if required
379
    // ungrab if required
376
    nsCOMPtr<nsIWidget> rollupWidget = do_QueryReferent(gRollupWindow);
380
    nsCOMPtr<nsIWidget> rollupWidget = do_QueryReferent(gRollupWindow);
377
    if (NS_STATIC_CAST(nsIWidget *, this) == rollupWidget.get()) {
381
    if (NS_STATIC_CAST(nsIWidget *, this) == rollupWidget.get()) {
Lines 2434-2441 Link Here
2434
                         G_CALLBACK(delete_event_cb), NULL);
2438
                         G_CALLBACK(delete_event_cb), NULL);
2435
        g_signal_connect(G_OBJECT(mShell), "window_state_event",
2439
        g_signal_connect(G_OBJECT(mShell), "window_state_event",
2436
                         G_CALLBACK(window_state_event_cb), NULL);
2440
                         G_CALLBACK(window_state_event_cb), NULL);
2437
        g_signal_connect(G_OBJECT(mShell), "style_set",
2441
2438
                         G_CALLBACK(style_set_cb), NULL);
2442
        g_signal_connect_after(gtk_settings_get_default(),
2443
                               "notify::gtk-theme-name",
2444
                               G_CALLBACK(theme_changed_cb), this);
2445
        g_signal_connect_after(gtk_settings_get_default(),
2446
                               "notify::gtk-key-theme-name",
2447
                               G_CALLBACK(theme_changed_cb), this);
2448
        g_signal_connect_after(gtk_settings_get_default(),
2449
                               "notify::gtk-font-name",
2450
                               G_CALLBACK(theme_changed_cb), this);
2439
    }
2451
    }
2440
2452
2441
    if (mContainer) {
2453
    if (mContainer) {
Lines 3916-3926 Link Here
3916
3928
3917
/* static */
3929
/* static */
3918
void
3930
void
3919
style_set_cb (GtkWidget *widget, GtkStyle *previous_style, gpointer data)
3931
theme_changed_cb (GtkSettings *settings, GParamSpec *pspec, nsWindow *data)
3920
{
3932
{
3921
    nsWindow *window = get_window_for_gtk_widget(widget);
3933
    data->ThemeChanged();
3922
    if (window)
3923
        window->ThemeChanged();
3924
}
3934
}
3925
3935
3926
//////////////////////////////////////////////////////////////////////
3936
//////////////////////////////////////////////////////////////////////

Return to bug 92467