#include "gdkscreen-x11.h"
#include "gdkdisplay-x11.h"
#include "gdkprivate-x11.h"
+#include "xsettings-client.h"
#include <glib.h>
return GDK_X11_SCREEN (screen)->root_window;
}
-static void
-_gdk_x11_screen_events_uninit (GdkScreen *screen)
-{
- GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
-
- if (x11_screen->xsettings_client)
- {
- xsettings_client_destroy (x11_screen->xsettings_client);
- x11_screen->xsettings_client = NULL;
- }
-}
-
static void
gdk_x11_screen_dispose (GObject *object)
{
}
}
- _gdk_x11_screen_events_uninit (GDK_SCREEN (object));
+ _gdk_x11_xsettings_finish (x11_screen);
if (x11_screen->root_window)
_gdk_window_destroy (x11_screen->root_window, TRUE);
return GDK_X11_SCREEN (screen)->screen_num;
}
+static Atom
+get_cm_atom (GdkX11Screen *x11_screen)
+{
+ return _gdk_x11_get_xatom_for_display_printf (x11_screen->display, "_NET_WM_CM_S%d", x11_screen->screen_num);
+}
+
static gboolean
check_is_composited (GdkDisplay *display,
GdkX11Screen *x11_screen)
{
- Atom xselection = gdk_x11_atom_to_xatom_for_display (display, x11_screen->cm_selection_atom);
Window xwindow;
- xwindow = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), xselection);
+ xwindow = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), get_cm_atom (x11_screen));
return xwindow != None;
}
-static GdkAtom
-make_cm_atom (int screen_number)
-{
- gchar *name = g_strdup_printf ("_NET_WM_CM_S%d", screen_number);
- GdkAtom atom = gdk_atom_intern (name, FALSE);
- g_free (name);
- return atom;
-}
-
static void
init_monitor_geometry (GdkX11Monitor *monitor,
int x, int y, int width, int height)
{
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
- x11_screen->cm_selection_atom = make_cm_atom (x11_screen->screen_num);
gdk_display_request_selection_notification (x11_screen->display,
- x11_screen->cm_selection_atom);
+ gdk_x11_xatom_to_atom_for_display (x11_screen->display, get_cm_atom (x11_screen)));
x11_screen->is_composited = check_is_composited (x11_screen->display, x11_screen);
}
#ifdef HAVE_XFIXES
XFixesSelectionNotifyEvent *selection_event = (XFixesSelectionNotifyEvent *)event;
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
- Atom xcm_selection_atom = gdk_x11_atom_to_xatom_for_display (x11_screen->display,
- x11_screen->cm_selection_atom);
- if (selection_event->selection == xcm_selection_atom)
+ if (selection_event->selection == get_cm_atom (x11_screen))
{
gboolean composited = selection_event->owner != None;
GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
const GValue *setting;
- setting = xsettings_client_get_setting (x11_screen->xsettings_client, name);
+ setting = g_hash_table_lookup (x11_screen->xsettings, name);
if (setting == NULL)
goto out;
return FALSE;
}
-void
-_gdk_x11_screen_init_events (GdkScreen *screen)
-{
- GdkX11Screen *x11_screen = GDK_X11_SCREEN (screen);
-
- /* Keep a flag to avoid extra notifies that we don't need
- */
- x11_screen->xsettings_in_init = TRUE;
- x11_screen->xsettings_client = xsettings_client_new (screen);
- x11_screen->xsettings_in_init = FALSE;
-}
-
/**
* gdk_x11_screen_get_window_manager_name:
* @screen: (type GdkX11Screen): a #GdkScreen