~ruther/dwl

bf35e77811d1474fbd2dd4c9d2c269a65a4f1ba7 — Leonardo Hernández Hernández 1 year, 5 months ago bf5a6be + 6cbf8e9
Merge remote-tracking branch 'upstream/main' into wlroots-next
1 files changed, 20 insertions(+), 15 deletions(-)

M dwl.c
M dwl.c => dwl.c +20 -15
@@ 523,13 523,13 @@ arrangelayers(Monitor *m)
	/* Find topmost keyboard interactive layer, if such a layer exists */
	for (i = 0; i < LENGTH(layers_above_shell); i++) {
		wl_list_for_each_reverse(l, &m->layers[layers_above_shell[i]], link) {
			if (!locked && l->layer_surface->current.keyboard_interactive && l->mapped) {
				/* Deactivate the focused client. */
				focusclient(NULL, 0);
				exclusive_focus = l;
				client_notify_enter(l->layer_surface->surface, wlr_seat_get_keyboard(seat));
				return;
			}
			if (locked || !l->layer_surface->current.keyboard_interactive || !l->mapped)
				continue;
			/* Deactivate the focused client. */
			focusclient(NULL, 0);
			exclusive_focus = l;
			client_notify_enter(l->layer_surface->surface, wlr_seat_get_keyboard(seat));
			return;
		}
	}
}


@@ 1359,16 1359,15 @@ keybinding(uint32_t mods, xkb_keysym_t sym)
	 * processing keys, rather than passing them on to the client for its own
	 * processing.
	 */
	int handled = 0;
	const Key *k;
	for (k = keys; k < END(keys); k++) {
		if (CLEANMASK(mods) == CLEANMASK(k->mod)
				&& sym == k->keysym && k->func) {
			k->func(&k->arg);
			handled = 1;
			return 1;
		}
	}
	return handled;
	return 0;
}

void


@@ 1393,9 1392,10 @@ keypress(struct wl_listener *listener, void *data)

	/* On _press_ if there is no active screen locker,
	 * attempt to process a compositor keybinding. */
	if (!locked && event->state == WL_KEYBOARD_KEY_STATE_PRESSED)
	if (!locked && event->state == WL_KEYBOARD_KEY_STATE_PRESSED) {
		for (i = 0; i < nsyms; i++)
			handled = keybinding(mods, syms[i]) || handled;
	}

	if (handled && group->wlr_group->keyboard.repeat_info.delay > 0) {
		group->mods = mods;


@@ 2281,7 2281,7 @@ setup(void)
	/* Use decoration protocols to negotiate server-side decorations */
	wlr_server_decoration_manager_set_default_mode(
			wlr_server_decoration_manager_create(dpy),
				WLR_SERVER_DECORATION_MANAGER_MODE_SERVER);
			WLR_SERVER_DECORATION_MANAGER_MODE_SERVER);
	xdg_decoration_mgr = wlr_xdg_decoration_manager_v1_create(dpy);
	LISTEN_STATIC(&xdg_decoration_mgr->events.new_toplevel_decoration, createdecoration);



@@ 2387,6 2387,10 @@ setup(void)

	wlr_scene_set_presentation(scene, wlr_presentation_create(dpy, backend));

	/* Make sure XWayland clients don't connect to the parent X server,
	 * e.g when running in the x11 backend or the wayland backend and the
	 * compositor has Xwayland support */
	unsetenv("DISPLAY");
#ifdef XWAYLAND
	/*
	 * Initialise the XWayland X server.


@@ 2557,10 2561,10 @@ unmapnotify(struct wl_listener *listener, void *data)
	}

	if (client_is_unmanaged(c)) {
		if (c == exclusive_focus)
		if (c == exclusive_focus) {
			exclusive_focus = NULL;
		if (client_surface(c) == seat->keyboard_state.focused_surface)
			focusclient(focustop(selmon), 1);
		}
	} else {
		wl_list_remove(&c->link);
		setmon(c, NULL, 0);


@@ 2600,10 2604,11 @@ updatemons(struct wl_listener *listener, void *data)
		m->m = m->w = (struct wlr_box){0};
	}
	/* Insert outputs that need to */
	wl_list_for_each(m, &mons, link)
	wl_list_for_each(m, &mons, link) {
		if (m->wlr_output->enabled
				&& !wlr_output_layout_get(output_layout, m->wlr_output))
			wlr_output_layout_add_auto(output_layout, m->wlr_output);
	}

	/* Now that we update the output layout we can get its box */
	wlr_output_layout_get_box(output_layout, NULL, &sgeom);

Do not follow this link