mirror of
https://cagebreak.project-repo.co/cagebreak.git
synced 2026-08-24 06:24:19 +02:00
Fix focussing bug for or views
This commit is contained in:
parent
de6c07ca2a
commit
34412aecad
2 changed files with 12 additions and 8 deletions
15
seat.c
15
seat.c
|
|
@ -1089,22 +1089,25 @@ seat_set_focus(struct cg_seat *seat, struct cg_view *view) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(prev_view == view) {
|
if(seat->seat->keyboard_state.focused_surface == view->wlr_surface) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if CG_HAS_XWAYLAND
|
#if CG_HAS_XWAYLAND
|
||||||
if(view->type == CG_XWAYLAND_VIEW) {
|
if(view->type == CG_XWAYLAND_VIEW && ! xwayland_view_should_manage(view)) {
|
||||||
const struct cg_xwayland_view *xwayland_view = xwayland_view_from_view(view);
|
const struct cg_xwayland_view *xwayland_view = xwayland_view_from_view(view);
|
||||||
if(!wlr_xwayland_or_surface_wants_focus(
|
if(!wlr_xwayland_or_surface_wants_focus(
|
||||||
xwayland_view->xwayland_surface)) {
|
xwayland_view->xwayland_surface)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
} else
|
||||||
#endif
|
#endif
|
||||||
|
{
|
||||||
|
if(prev_view != NULL) {
|
||||||
|
view_activate(prev_view, false);
|
||||||
|
}
|
||||||
|
|
||||||
if(prev_view != NULL) {
|
seat->focused_view = view;
|
||||||
view_activate(prev_view, false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
view_activate(view, true);
|
view_activate(view, true);
|
||||||
|
|
@ -1123,7 +1126,5 @@ seat_set_focus(struct cg_seat *seat, struct cg_view *view) {
|
||||||
NULL);
|
NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
seat->focused_view = view;
|
|
||||||
|
|
||||||
process_cursor_motion(seat, -1);
|
process_cursor_motion(seat, -1);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
5
view.c
5
view.c
|
|
@ -233,7 +233,7 @@ view_unmap(struct cg_view *view) {
|
||||||
struct cg_view* prev = view_get_prev_view(view);
|
struct cg_view* prev = view_get_prev_view(view);
|
||||||
struct cg_tile* view_tile = view_get_tile(view);
|
struct cg_tile* view_tile = view_get_tile(view);
|
||||||
wlr_output_damage_add_box(view_tile->workspace->output->damage, &view_tile->tile);
|
wlr_output_damage_add_box(view_tile->workspace->output->damage, &view_tile->tile);
|
||||||
if(seat_get_focus(view->workspace->server->seat) == view) {
|
if(view->workspace->server->seat->seat->keyboard_state.focused_surface == NULL || view->workspace->server->seat->seat->keyboard_state.focused_surface == view->wlr_surface) {
|
||||||
seat_set_focus(view->workspace->server->seat, prev);
|
seat_set_focus(view->workspace->server->seat, prev);
|
||||||
} else {
|
} else {
|
||||||
view_tile->view = prev;
|
view_tile->view = prev;
|
||||||
|
|
@ -246,6 +246,9 @@ view_unmap(struct cg_view *view) {
|
||||||
#if CG_HAS_XWAYLAND
|
#if CG_HAS_XWAYLAND
|
||||||
else {
|
else {
|
||||||
view_damage_whole(view);
|
view_damage_whole(view);
|
||||||
|
if(view->workspace->server->seat->seat->keyboard_state.focused_surface == NULL || view->workspace->server->seat->seat->keyboard_state.focused_surface == view->wlr_surface) {
|
||||||
|
seat_set_focus(view->workspace->server->seat, view->workspace->server->seat->focused_view);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue