diff options
| -rw-r--r-- | dwl.c | 28 | 
1 files changed, 10 insertions, 18 deletions
| @@ -836,12 +836,6 @@ void  commitnotify(struct wl_listener *listener, void *data)  {  	Client *c = wl_container_of(listener, c, commit); -	struct wlr_box box = {0}; -	client_get_geometry(c, &box); - -	if (c->mon && !wlr_box_empty(&box) && (box.width != c->geom.width - 2 * c->bw -			|| box.height != c->geom.height - 2 * c->bw)) -		arrange(c->mon);  	/* mark a pending resize as completed */  	if (c->resize && (c->resize <= c->surface.xdg->current.configure_serial @@ -1033,6 +1027,7 @@ createnotify(struct wl_listener *listener, void *data)  	LISTEN(&xdg_surface->events.map, &c->map, mapnotify);  	LISTEN(&xdg_surface->events.unmap, &c->unmap, unmapnotify);  	LISTEN(&xdg_surface->events.destroy, &c->destroy, destroynotify); +	LISTEN(&xdg_surface->surface->events.commit, &c->commit, commitnotify);  	LISTEN(&xdg_surface->toplevel->events.set_title, &c->set_title, updatetitle);  	LISTEN(&xdg_surface->toplevel->events.request_fullscreen, &c->fullscreen,  			fullscreennotify); @@ -1139,8 +1134,9 @@ destroynotify(struct wl_listener *listener, void *data)  		wl_list_remove(&c->configure.link);  		wl_list_remove(&c->set_hints.link);  		wl_list_remove(&c->activate.link); -	} +	} else  #endif +	{ wl_list_remove(&c->commit.link); }  	free(c);  } @@ -1428,14 +1424,8 @@ mapnotify(struct wl_listener *listener, void *data)  	c->scene_surface = c->type == XDGShell  			? wlr_scene_xdg_surface_create(c->scene, c->surface.xdg)  			: wlr_scene_subsurface_tree_create(c->scene, client_surface(c)); -	if (client_surface(c)) { +	if (client_surface(c))  		client_surface(c)->data = c->scene; -		/* Ideally we should do this in createnotify{,x11} but at that moment -		* wlr_xwayland_surface doesn't have wlr_surface yet -		*/ -		LISTEN(&client_surface(c)->events.commit, &c->commit, commitnotify); - -	}  	c->scene->data = c->scene_surface->data = c;  #ifdef XWAYLAND @@ -2416,7 +2406,6 @@ unmapnotify(struct wl_listener *listener, void *data)  		wl_list_remove(&c->flink);  	} -	wl_list_remove(&c->commit.link);  	wlr_scene_node_destroy(c->scene);  	printstatus();  	motionnotify(0); @@ -2592,9 +2581,12 @@ void  configurex11(struct wl_listener *listener, void *data)  {  	Client *c = wl_container_of(listener, c, configure); -	struct wlr_xwayland_surface_configure_event *event = data; -	wlr_xwayland_surface_configure(c->surface.xwayland, -			event->x, event->y, event->width, event->height); +	struct wlr_xwayland_surface_configure_event *e = data; +	if (c->isfloating) +		resize(c, (struct wlr_box){.x = e->x, .y = e->y, +				.width = e->width, .height = e->height}, 0); +	else +		arrange(c->mon);  }  void | 
