]> git.mdlowis.com Git - proto/labwc.git/commitdiff
workaround Gtk primary selection bug by changing order of globals
authorDaniel Barlow <dan@telent.net>
Fri, 20 Aug 2021 23:06:58 +0000 (00:06 +0100)
committerDaniel Barlow <dan@telent.net>
Fri, 20 Aug 2021 23:17:15 +0000 (00:17 +0100)
This makes primary selections work at least with Emacs (pgtk backend)
and Firefox. I haven't tested others.

src/server.c

index ed68fc669bb7799c337fee47c1dc6fccb1c29ceb..6ffac31dabad11ebfb646634aa88f95dad4b0472 100644 (file)
@@ -156,6 +156,17 @@ server_init(struct server *server)
                exit(EXIT_FAILURE);
        }
 
+       /* empirically, primary selection doesn't work with Gtk apps unless the
+        * device manager is one of the earliest globals to be advertised. All
+        * credit to Wayfire for discovering this, though their symptoms
+        * (crash) are not the same as ours (silently does nothing). When adding
+        * more globals above this line it would be as well to check that
+        * middle-button paste still works with any Gtk app of your choice
+        *
+        * https://wayfire.org/2020/08/04/Wayfire-0-5.html
+       */
+       wlr_primary_selection_v1_device_manager_create(server->wl_display);
+
        output_init(server);
        seat_init(server);
 
@@ -195,7 +206,6 @@ server_init(struct server *server)
        wlr_screencopy_manager_v1_create(server->wl_display);
        wlr_data_control_manager_v1_create(server->wl_display);
        wlr_gamma_control_manager_v1_create(server->wl_display);
-       wlr_primary_selection_v1_device_manager_create(server->wl_display);
 
        server->foreign_toplevel_manager =
                wlr_foreign_toplevel_manager_v1_create(server->wl_display);