mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
ssd: eliminate ssd_hover_state (addressing a FIXME)
This commit is contained in:
parent
1188534876
commit
ba426e2271
8 changed files with 14 additions and 36 deletions
|
|
@ -225,7 +225,7 @@ struct server {
|
|||
*/
|
||||
struct view *active_view;
|
||||
|
||||
struct ssd_hover_state *ssd_hover_state;
|
||||
struct ssd_part_button *hovered_button;
|
||||
|
||||
/* Tree for all non-layer xdg/xwayland-shell surfaces */
|
||||
struct wlr_scene_tree *view_tree;
|
||||
|
|
|
|||
|
|
@ -173,12 +173,6 @@ struct ssd_part_button {
|
|||
struct wl_list link; /* ssd_titlebar_subtree.buttons_{left,right} */
|
||||
};
|
||||
|
||||
/* FIXME: This structure is redundant as ssd_part contains view */
|
||||
struct ssd_hover_state {
|
||||
struct view *view;
|
||||
struct ssd_part_button *button;
|
||||
};
|
||||
|
||||
struct wlr_buffer;
|
||||
struct wlr_scene_tree;
|
||||
|
||||
|
|
|
|||
|
|
@ -23,8 +23,8 @@ struct wlr_cursor;
|
|||
#define SSD_SHADOW_INSET 0.3
|
||||
|
||||
/* Forward declare arguments */
|
||||
struct server;
|
||||
struct ssd;
|
||||
struct ssd_hover_state;
|
||||
struct ssd_part;
|
||||
struct view;
|
||||
struct wlr_scene;
|
||||
|
|
@ -52,9 +52,8 @@ void ssd_set_titlebar(struct ssd *ssd, bool enabled);
|
|||
void ssd_enable_keybind_inhibit_indicator(struct ssd *ssd, bool enable);
|
||||
void ssd_enable_shade(struct ssd *ssd, bool enable);
|
||||
|
||||
struct ssd_hover_state *ssd_hover_state_new(void);
|
||||
void ssd_update_button_hover(struct wlr_scene_node *node,
|
||||
struct ssd_hover_state *hover_state);
|
||||
void ssd_update_hovered_button(struct server *server,
|
||||
struct wlr_scene_node *node);
|
||||
|
||||
enum lab_node_type ssd_part_get_type(const struct ssd_part *part);
|
||||
struct view *ssd_part_get_view(const struct ssd_part *part);
|
||||
|
|
|
|||
|
|
@ -515,7 +515,7 @@ cursor_update_common(struct server *server, struct cursor_context *ctx,
|
|||
struct seat *seat = &server->seat;
|
||||
struct wlr_seat *wlr_seat = seat->seat;
|
||||
|
||||
ssd_update_button_hover(ctx->node, server->ssd_hover_state);
|
||||
ssd_update_hovered_button(server, ctx->node);
|
||||
|
||||
if (server->input_mode != LAB_INPUT_STATE_PASSTHROUGH) {
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ handle_touch_up(struct wl_listener *listener, void *data)
|
|||
} else {
|
||||
cursor_emulate_button(seat, BTN_LEFT,
|
||||
WL_POINTER_BUTTON_STATE_RELEASED, event->time_msec);
|
||||
ssd_update_button_hover(NULL, seat->server->ssd_hover_state);
|
||||
ssd_update_hovered_button(seat->server, NULL);
|
||||
}
|
||||
wl_list_remove(&touch_point->link);
|
||||
zfree(touch_point);
|
||||
|
|
|
|||
|
|
@ -549,8 +549,6 @@ server_init(struct server *server)
|
|||
wl_list_init(&server->views);
|
||||
wl_list_init(&server->unmanaged_surfaces);
|
||||
|
||||
server->ssd_hover_state = ssd_hover_state_new();
|
||||
|
||||
server->scene = wlr_scene_create();
|
||||
if (!server->scene) {
|
||||
wlr_log(WLR_ERROR, "unable to create scene");
|
||||
|
|
@ -795,5 +793,4 @@ server_finish(struct server *server)
|
|||
wlr_scene_node_destroy(&server->scene->tree.node);
|
||||
|
||||
wl_display_destroy(server->wl_display);
|
||||
free(server->ssd_hover_state);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -492,8 +492,7 @@ ssd_update_title(struct ssd *ssd)
|
|||
}
|
||||
|
||||
void
|
||||
ssd_update_button_hover(struct wlr_scene_node *node,
|
||||
struct ssd_hover_state *hover_state)
|
||||
ssd_update_hovered_button(struct server *server, struct wlr_scene_node *node)
|
||||
{
|
||||
struct ssd_part_button *button = NULL;
|
||||
|
||||
|
|
@ -502,7 +501,7 @@ ssd_update_button_hover(struct wlr_scene_node *node,
|
|||
if (desc->type == LAB_NODE_DESC_SSD_PART) {
|
||||
button = button_try_from_ssd_part(
|
||||
node_ssd_part_from_node(node));
|
||||
if (button == hover_state->button) {
|
||||
if (button == server->hovered_button) {
|
||||
/* Cursor is still on the same button */
|
||||
return;
|
||||
}
|
||||
|
|
@ -510,15 +509,12 @@ ssd_update_button_hover(struct wlr_scene_node *node,
|
|||
}
|
||||
|
||||
/* Disable old hover */
|
||||
if (hover_state->button) {
|
||||
update_button_state(hover_state->button, LAB_BS_HOVERED, false);
|
||||
hover_state->view = NULL;
|
||||
hover_state->button = NULL;
|
||||
if (server->hovered_button) {
|
||||
update_button_state(server->hovered_button, LAB_BS_HOVERED, false);
|
||||
}
|
||||
server->hovered_button = button;
|
||||
if (button) {
|
||||
update_button_state(button, LAB_BS_HOVERED, true);
|
||||
hover_state->view = button->base.view;
|
||||
hover_state->button = button;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -264,11 +264,9 @@ ssd_destroy(struct ssd *ssd)
|
|||
|
||||
/* Maybe reset hover view */
|
||||
struct view *view = ssd->view;
|
||||
struct ssd_hover_state *hover_state;
|
||||
hover_state = view->server->ssd_hover_state;
|
||||
if (hover_state->view == view) {
|
||||
hover_state->view = NULL;
|
||||
hover_state->button = NULL;
|
||||
struct server *server = view->server;
|
||||
if (server->hovered_button && server->hovered_button->base.view == view) {
|
||||
server->hovered_button = NULL;
|
||||
}
|
||||
|
||||
/* Destroy subcomponents */
|
||||
|
|
@ -345,12 +343,6 @@ ssd_enable_keybind_inhibit_indicator(struct ssd *ssd, bool enable)
|
|||
wlr_scene_rect_set_color(ssd->border.subtrees[SSD_ACTIVE].top, color);
|
||||
}
|
||||
|
||||
struct ssd_hover_state *
|
||||
ssd_hover_state_new(void)
|
||||
{
|
||||
return znew(struct ssd_hover_state);
|
||||
}
|
||||
|
||||
enum lab_node_type
|
||||
ssd_part_get_type(const struct ssd_part *part)
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue