diff options
author | lukefromdc <[email protected]> | 2023-05-17 23:00:54 -0400 |
---|---|---|
committer | Luke from DC <[email protected]> | 2023-05-25 18:56:56 +0000 |
commit | 5688856331109e77d7362f5665fb178d1c269a39 (patch) | |
tree | 0f5b0b001fe68c5a5d5eab57e5c38cb3fa540546 /src/caja-application.c | |
parent | 99a1e2a20567cbe988006d0fdfef6abab6324dc2 (diff) | |
download | caja-5688856331109e77d7362f5665fb178d1c269a39.tar.bz2 caja-5688856331109e77d7362f5665fb178d1c269a39.tar.xz |
Initial wayland support
Diffstat (limited to 'src/caja-application.c')
-rw-r--r-- | src/caja-application.c | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/src/caja-application.c b/src/caja-application.c index 5f7a8ac4..1467e421 100644 --- a/src/caja-application.c +++ b/src/caja-application.c @@ -634,38 +634,44 @@ selection_get_cb (GtkWidget *widget, static GtkWidget * get_desktop_manager_selection (GdkDisplay *display) { - char selection_name[32]; - GdkAtom selection_atom; - Window selection_owner; - GtkWidget *selection_widget; - - g_snprintf (selection_name, sizeof (selection_name), "_NET_DESKTOP_MANAGER_S0"); - selection_atom = gdk_atom_intern (selection_name, FALSE); - - selection_owner = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), + /*FIXME: for Wayland we need a new desktop canvas anyway + *so when that is ready we will need to add a wayland code + *path here to support it + */ + if (GDK_IS_X11_DISPLAY (display)){ + char selection_name[32]; + GdkAtom selection_atom; + Window selection_owner; + GtkWidget *selection_widget; + + g_snprintf (selection_name, sizeof (selection_name), "_NET_DESKTOP_MANAGER_S0"); + selection_atom = gdk_atom_intern (selection_name, FALSE); + + selection_owner = XGetSelectionOwner (GDK_DISPLAY_XDISPLAY (display), gdk_x11_atom_to_xatom_for_display (display, selection_atom)); - if (selection_owner != None) - { + if (selection_owner != None) + { return NULL; - } + } - selection_widget = gtk_invisible_new_for_screen (gdk_display_get_default_screen (display)); - /* We need this for gdk_x11_get_server_time() */ - gtk_widget_add_events (selection_widget, GDK_PROPERTY_CHANGE_MASK); + selection_widget = gtk_invisible_new_for_screen (gdk_display_get_default_screen (display)); + /* We need this for gdk_x11_get_server_time() */ + gtk_widget_add_events (selection_widget, GDK_PROPERTY_CHANGE_MASK); - if (gtk_selection_owner_set_for_display (display, + if (gtk_selection_owner_set_for_display (display, selection_widget, selection_atom, gdk_x11_get_server_time (gtk_widget_get_window (selection_widget)))) - { + { - g_signal_connect (selection_widget, "selection_get", + g_signal_connect (selection_widget, "selection_get", G_CALLBACK (selection_get_cb), NULL); - return selection_widget; - } + return selection_widget; + } - gtk_widget_destroy (selection_widget); + gtk_widget_destroy (selection_widget); + } return NULL; } |