mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
view/ssd: Refactor and fix visual indication for active windows
Partially fixes #494. Co-Authored-by: Consolatis
This commit is contained in:
parent
127a9c7be4
commit
b7c4ba825a
5 changed files with 37 additions and 53 deletions
|
|
@ -140,21 +140,15 @@ ssd_resize_edges(enum ssd_part_type type)
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
_ssd_set_active(struct ssd *ssd, bool active)
|
||||
{
|
||||
wlr_scene_node_set_enabled(&ssd->border.active.tree->node, active);
|
||||
wlr_scene_node_set_enabled(&ssd->titlebar.active.tree->node, active);
|
||||
wlr_scene_node_set_enabled(&ssd->border.inactive.tree->node, !active);
|
||||
wlr_scene_node_set_enabled(&ssd->titlebar.inactive.tree->node, !active);
|
||||
}
|
||||
|
||||
void
|
||||
ssd_create(struct view *view)
|
||||
{
|
||||
bool is_active = view->server->focused_view == view;
|
||||
|
||||
if (view->ssd.tree) {
|
||||
/* SSD was hidden. Just enable it */
|
||||
wlr_scene_node_set_enabled(&view->ssd.tree->node, true);
|
||||
ssd_set_active(view, is_active);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -164,6 +158,7 @@ ssd_create(struct view *view)
|
|||
ssd_border_create(view);
|
||||
ssd_titlebar_create(view);
|
||||
view->margin = ssd_thickness(view);
|
||||
ssd_set_active(view, is_active);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -211,14 +206,8 @@ void ssd_reload(struct view *view)
|
|||
return;
|
||||
}
|
||||
|
||||
bool view_was_active = view->server->ssd_focused_view == view;
|
||||
ssd_destroy(view);
|
||||
ssd_create(view);
|
||||
if (view_was_active) {
|
||||
view->server->ssd_focused_view = view;
|
||||
} else {
|
||||
_ssd_set_active(&view->ssd, false);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
|
@ -228,11 +217,6 @@ ssd_destroy(struct view *view)
|
|||
return;
|
||||
}
|
||||
|
||||
/* Maybe reset focused view */
|
||||
if (view->server->ssd_focused_view == view) {
|
||||
view->server->ssd_focused_view = NULL;
|
||||
}
|
||||
|
||||
/* Maybe reset hover view */
|
||||
struct ssd_hover_state *hover_state;
|
||||
hover_state = &view->server->ssd_hover_state;
|
||||
|
|
@ -283,19 +267,13 @@ ssd_part_contains(enum ssd_part_type whole, enum ssd_part_type candidate)
|
|||
}
|
||||
|
||||
void
|
||||
ssd_set_active(struct view *view)
|
||||
ssd_set_active(struct view *view, bool active)
|
||||
{
|
||||
if (!view->ssd.tree) {
|
||||
return;
|
||||
}
|
||||
|
||||
struct view *last = view->server->ssd_focused_view;
|
||||
if (last == view) {
|
||||
return;
|
||||
}
|
||||
if (last && last->ssd.tree) {
|
||||
_ssd_set_active(&last->ssd, false);
|
||||
}
|
||||
_ssd_set_active(&view->ssd, true);
|
||||
view->server->ssd_focused_view = view;
|
||||
wlr_scene_node_set_enabled(&view->ssd.border.active.tree->node, active);
|
||||
wlr_scene_node_set_enabled(&view->ssd.titlebar.active.tree->node, active);
|
||||
wlr_scene_node_set_enabled(&view->ssd.border.inactive.tree->node, !active);
|
||||
wlr_scene_node_set_enabled(&view->ssd.titlebar.inactive.tree->node, !active);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue