refactor: cleanup + improve focus

This commit is contained in:
DanyLE
2024-04-01 16:07:07 +02:00
parent a54dcb682c
commit f03edb1db7
3 changed files with 24 additions and 47 deletions

19
view.c
View File

@ -21,10 +21,6 @@ void diyac_focus_view(struct diyac_view *toplevel, bool raise)
{
return;
}
if(!toplevel->mapped)
{
return;
}
struct diyac_server *server = toplevel->server;
struct wlr_surface *prev_surface = server->seat.wlr_seat->keyboard_state.focused_surface;
if (prev_surface == toplevel->xdg_toplevel->base->surface)
@ -46,6 +42,10 @@ void diyac_focus_view(struct diyac_view *toplevel, bool raise)
wlr_xdg_toplevel_set_activated(prev_toplevel, false);
}
}
if(!toplevel->mapped)
{
return;
}
raise_to_front(toplevel);
if (raise)
{
@ -82,7 +82,6 @@ struct diyac_view *diyac_view_at(
void diyac_focus_topmost_view(struct diyac_server *server)
{
wlr_log(WLR_INFO, "diyac_focus_topmost_view");
struct diyac_view *view = diyac_topmost_focusable_view(server);
if (view)
{
@ -152,16 +151,12 @@ bool diyac_view_update_geometry(struct diyac_view *view, bool grabbed)
// view->output->wlr_output, &view->current))
//{
struct wlr_box usable = diyac_output_usable_area(view->output);
wlr_log(WLR_INFO, "diyac_view_update_geometry: current: [%d,%d,%d,%d], usable: [%d,%d,%d,%d] ",
wlr_log(WLR_DEBUG, "diyac_view_update_geometry: current: [%d,%d,%d,%d], usable: [%d,%d,%d,%d] ",
geometry->x, geometry->y, geometry->width, geometry->height,
usable.x, usable.y, usable.width, usable.height);
struct diyac_server *server = view->server;
if (!view->mapped)
{
wlr_xdg_toplevel_set_maximized(view->xdg_toplevel, false);
wlr_xdg_toplevel_set_fullscreen(view->xdg_toplevel, false);
// the view has not yet be mapped, don't maximize it
wlr_log(WLR_INFO, "The view has not yet be mapped, ignore request");
view->state = DIYAC_VIEW_NORMAL;
return false;
}
@ -172,7 +167,6 @@ bool diyac_view_update_geometry(struct diyac_view *view, bool grabbed)
* We dont change the current_view geometry in maximize state
*
*/
wlr_xdg_toplevel_set_maximized(view->xdg_toplevel, true);
wlr_scene_node_set_position(&view->scene_tree->node, usable.x, usable.y);
wlr_xdg_toplevel_set_size(view->xdg_toplevel, usable.width, usable.height);
return true;
@ -184,7 +178,6 @@ bool diyac_view_update_geometry(struct diyac_view *view, bool grabbed)
/*TODO: implement full-screen */
//view->state = DIYAC_VIEW_NORMAL;
wlr_log(WLR_INFO, "diyac_view_update_geometry: full-screen ignore");
wlr_xdg_toplevel_set_fullscreen(view->xdg_toplevel, false);
return false;
default:
@ -231,7 +224,7 @@ bool diyac_view_update_geometry(struct diyac_view *view, bool grabbed)
if (adjusted)
{
wlr_log(WLR_INFO, "diyac_view_update_geometry: updating geometry: %d %d %d %d", geometry->x, geometry->y, geometry->width, geometry->height);
wlr_log(WLR_DEBUG, "diyac_view_update_geometry: updating geometry: %d %d %d %d", geometry->x, geometry->y, geometry->width, geometry->height);
wlr_scene_node_set_position(&view->scene_tree->node, geometry->x, geometry->y);
wlr_xdg_toplevel_set_size(view->xdg_toplevel, geometry->width, geometry->height);
}