mirror of
				https://codeberg.org/dwl/dwl.git
				synced 2025-10-30 19:44:17 +00:00 
			
		
		
		
	handle request set selection
Ported from wlroots commit fa5d709
This commit is contained in:
		
							parent
							
								
									94bb68afe1
								
							
						
					
					
						commit
						0b0dd6b63c
					
				
							
								
								
									
										19
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										19
									
								
								dwl.c
									
									
									
									
									
								
							| @ -168,6 +168,7 @@ static void run(char *startup_cmd); | |||||||
| static void scalebox(struct wlr_box *box, float scale); | static void scalebox(struct wlr_box *box, float scale); | ||||||
| static Client *selclient(void); | static Client *selclient(void); | ||||||
| static void setcursor(struct wl_listener *listener, void *data); | static void setcursor(struct wl_listener *listener, void *data); | ||||||
|  | static void setsel(struct wl_listener *listener, void *data); | ||||||
| static void setfloating(Client *c, int floating); | static void setfloating(Client *c, int floating); | ||||||
| static void setlayout(const Arg *arg); | static void setlayout(const Arg *arg); | ||||||
| static void setmfact(const Arg *arg); | static void setmfact(const Arg *arg); | ||||||
| @ -220,6 +221,7 @@ static struct wl_listener new_input = {.notify = inputdevice}; | |||||||
| static struct wl_listener new_output = {.notify = createmon}; | static struct wl_listener new_output = {.notify = createmon}; | ||||||
| static struct wl_listener new_xdg_surface = {.notify = createnotify}; | static struct wl_listener new_xdg_surface = {.notify = createnotify}; | ||||||
| static struct wl_listener request_cursor = {.notify = setcursor}; | static struct wl_listener request_cursor = {.notify = setcursor}; | ||||||
|  | static struct wl_listener request_set_sel = {.notify = setsel}; | ||||||
| 
 | 
 | ||||||
| /* configuration, allows nested code to access above variables */ | /* configuration, allows nested code to access above variables */ | ||||||
| #include "config.h" | #include "config.h" | ||||||
| @ -1109,6 +1111,17 @@ setcursor(struct wl_listener *listener, void *data) | |||||||
| 				event->hotspot_x, event->hotspot_y); | 				event->hotspot_x, event->hotspot_y); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void | ||||||
|  | setsel(struct wl_listener *listener, void *data) | ||||||
|  | { | ||||||
|  | 	/* This event is raised by the seat when a client wants to set the selection,
 | ||||||
|  | 	 * usually when the user copies something. wlroots allows compositors to | ||||||
|  | 	 * ignore such requests if they so choose, but in dwl we always honor | ||||||
|  | 	 */ | ||||||
|  | 	struct wlr_seat_request_set_selection_event *event = data; | ||||||
|  | 	wlr_seat_set_selection(seat, event->source, event->serial); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| setfloating(Client *c, int floating) | setfloating(Client *c, int floating) | ||||||
| { | { | ||||||
| @ -1192,7 +1205,9 @@ setup(void) | |||||||
| 	/* This creates some hands-off wlroots interfaces. The compositor is
 | 	/* This creates some hands-off wlroots interfaces. The compositor is
 | ||||||
| 	 * necessary for clients to allocate surfaces and the data device manager | 	 * necessary for clients to allocate surfaces and the data device manager | ||||||
| 	 * handles the clipboard. Each of these wlroots interfaces has room for you | 	 * handles the clipboard. Each of these wlroots interfaces has room for you | ||||||
| 	 * to dig your fingers in and play with their behavior if you want. */ | 	 * to dig your fingers in and play with their behavior if you want. Note that | ||||||
|  | 	 * the clients cannot set the selection directly without compositor approval, | ||||||
|  | 	 * see the setsel() function. */ | ||||||
| 	wlr_compositor_create(dpy, drw); | 	wlr_compositor_create(dpy, drw); | ||||||
| 	wlr_data_device_manager_create(dpy); | 	wlr_data_device_manager_create(dpy); | ||||||
| 
 | 
 | ||||||
| @ -1260,6 +1275,8 @@ setup(void) | |||||||
| 	seat = wlr_seat_create(dpy, "seat0"); | 	seat = wlr_seat_create(dpy, "seat0"); | ||||||
| 	wl_signal_add(&seat->events.request_set_cursor, | 	wl_signal_add(&seat->events.request_set_cursor, | ||||||
| 			&request_cursor); | 			&request_cursor); | ||||||
|  | 	wl_signal_add(&seat->events.request_set_selection, | ||||||
|  | 			&request_set_sel); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Devin J. Pohly
						Devin J. Pohly