Merge pull request #32 from alex-courtis/24-xwayland-cursor
#24 ensure that xwayland cursor defaults to left_ptr
This commit is contained in:
		
							
								
								
									
										18
									
								
								dwl.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								dwl.c
									
									
									
									
									
								
							| @@ -305,6 +305,10 @@ static struct wlr_xdg_decoration_manager_v1 *xdeco_mgr; | |||||||
|  |  | ||||||
| static struct wlr_cursor *cursor; | static struct wlr_cursor *cursor; | ||||||
| static struct wlr_xcursor_manager *cursor_mgr; | static struct wlr_xcursor_manager *cursor_mgr; | ||||||
|  | #ifdef XWAYLAND | ||||||
|  | static struct wlr_xcursor *xcursor; | ||||||
|  | static struct wlr_xcursor_manager *xcursor_mgr; | ||||||
|  | #endif | ||||||
|  |  | ||||||
| static struct wlr_seat *seat; | static struct wlr_seat *seat; | ||||||
| static struct wl_list keyboards; | static struct wl_list keyboards; | ||||||
| @@ -2049,6 +2053,20 @@ setup(void) | |||||||
| 		wl_signal_add(&xwayland->events.ready, &xwayland_ready); | 		wl_signal_add(&xwayland->events.ready, &xwayland_ready); | ||||||
| 		wl_signal_add(&xwayland->events.new_surface, &new_xwayland_surface); | 		wl_signal_add(&xwayland->events.new_surface, &new_xwayland_surface); | ||||||
|  |  | ||||||
|  | 		/* | ||||||
|  | 		 * Create the XWayland cursor manager at scale 1, setting its default | ||||||
|  | 		 * pointer to match the rest of dwl. | ||||||
|  | 		 */ | ||||||
|  | 		xcursor_mgr = wlr_xcursor_manager_create(NULL, 24); | ||||||
|  | 		wlr_xcursor_manager_load(xcursor_mgr, 1); | ||||||
|  | 		xcursor = wlr_xcursor_manager_get_xcursor(xcursor_mgr, "left_ptr", 1); | ||||||
|  | 		if (xcursor) { | ||||||
|  | 			wlr_xwayland_set_cursor(xwayland, | ||||||
|  | 					xcursor->images[0]->buffer, xcursor->images[0]->width * 4, | ||||||
|  | 					xcursor->images[0]->width, xcursor->images[0]->height, | ||||||
|  | 					xcursor->images[0]->hotspot_x, xcursor->images[0]->hotspot_y); | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		setenv("DISPLAY", xwayland->display_name, true); | 		setenv("DISPLAY", xwayland->display_name, true); | ||||||
| 	} else { | 	} else { | ||||||
| 		fprintf(stderr, "failed to setup XWayland X server, continuing without it\n"); | 		fprintf(stderr, "failed to setup XWayland X server, continuing without it\n"); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user