]> git.mdlowis.com Git - proto/labwc.git/commitdiff
add support for primary selection
authorDaniel Barlow <dan@telent.net>
Wed, 18 Aug 2021 22:41:07 +0000 (23:41 +0100)
committerDaniel Barlow <dan@telent.net>
Wed, 18 Aug 2021 22:42:56 +0000 (23:42 +0100)
include/labwc.h
src/cursor.c

index 8245eedefb1462deefc43f95ace15c229f140ce3..367838c889b4a079169396926468fe6e2fae5bce 100644 (file)
@@ -76,6 +76,7 @@ struct seat {
 
        struct wl_listener request_cursor;
        struct wl_listener request_set_selection;
+       struct wl_listener request_set_primary_selection;
 
        struct wl_listener keyboard_key;
        struct wl_listener keyboard_modifiers;
index c0d8025408c10f62922a3852ba5ca5a249998b72..4f7c3830e03f850724068d6b7bfee1123a1f25bc 100644 (file)
@@ -5,6 +5,7 @@
 #include "labwc.h"
 #include "menu/menu.h"
 #include "ssd.h"
+#include <wlr/types/wlr_primary_selection.h>
 
 static void
 request_cursor_notify(struct wl_listener *listener, void *data)
@@ -40,6 +41,16 @@ request_set_selection_notify(struct wl_listener *listener, void *data)
                event->serial);
 }
 
+static void
+request_set_primary_selection_notify(struct wl_listener *listener, void *data)
+{
+       struct seat *seat = wl_container_of(
+               listener, seat, request_set_primary_selection);
+       struct wlr_seat_request_set_primary_selection_event *event = data;
+       wlr_seat_set_primary_selection(seat->seat, event->source,
+               event->serial);
+}
+
 static void
 process_cursor_move(struct server *server, uint32_t time)
 {
@@ -402,10 +413,8 @@ cursor_init(struct seat *seat)
        seat->request_set_selection.notify = request_set_selection_notify;
        wl_signal_add(&seat->seat->events.request_set_selection, &seat->request_set_selection);
 
-       /* TODO:
-        * seat->request_set_primary_selection.notify =
-        *      request_set_primary_selectioni_notify;
-        * wl_signal_add(&seat->seat->events.request_set_primary_selection,
-        *      &seat->request_set_primary_selection);
-        */
+       seat->request_set_primary_selection.notify =
+               request_set_primary_selection_notify;
+       wl_signal_add(&seat->seat->events.request_set_primary_selection,
+               &seat->request_set_primary_selection);
 }