GdkScreen *screen)
{
GdkEvent new_event;
- GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
- if (x11_screen->xsettings_in_init)
- return;
-
new_event.type = GDK_SETTING;
new_event.setting.window = gdk_screen_get_root_window (screen);
new_event.setting.send_event = FALSE;
}
static void
-read_settings (XSettingsClient *client)
+read_settings (XSettingsClient *client,
+ gboolean do_notify)
{
Atom type;
int format;
}
}
- notify_changes (client, old_list);
+ if (do_notify)
+ notify_changes (client, old_list);
if (old_list)
g_hash_table_unref (old_list);
}
gpointer data);
static void
-check_manager_window (XSettingsClient *client)
+check_manager_window (XSettingsClient *client,
+ gboolean notify_changes)
{
GdkDisplay *display;
Display *xdisplay;
gdk_window_add_filter (client->manager_window, gdk_xsettings_manager_window_filter, client->screen);
}
- read_settings (client);
+ read_settings (client, notify_changes);
}
static GdkFilterReturn
xev->xclient.message_type == gdk_x11_get_xatom_by_name_for_display (display, "MANAGER") &&
xev->xclient.data.l[1] == client->selection_atom)
{
- check_manager_window (client);
+ check_manager_window (client, TRUE);
return GDK_FILTER_REMOVE;
}
if (xev->xany.type == DestroyNotify)
{
- check_manager_window (client);
+ check_manager_window (client, TRUE);
/* let GDK do its cleanup */
return GDK_FILTER_CONTINUE;
}
else if (xev->xany.type == PropertyNotify)
{
- read_settings (client);
+ read_settings (client, TRUE);
return GDK_FILTER_REMOVE;
}
gdk_window_add_filter (gdk_screen_get_root_window (screen), gdk_xsettings_root_window_filter, screen);
- check_manager_window (client);
+ check_manager_window (client, FALSE);
return client;
}