mirror of
https://github.com/labwc/labwc.git
synced 2026-04-06 07:15:40 -04:00
focus: add <focusOnTitlebarEnter> option to follow-mouse on SSD titlebars
This commit is contained in:
parent
9f4178955a
commit
7d9024d33a
3 changed files with 17 additions and 0 deletions
|
|
@ -199,6 +199,9 @@ struct rcxml {
|
||||||
float mag_scale;
|
float mag_scale;
|
||||||
float mag_increment;
|
float mag_increment;
|
||||||
bool mag_filter;
|
bool mag_filter;
|
||||||
|
|
||||||
|
/* Focus behavior */
|
||||||
|
bool focus_titlebar_on_mouse_enter;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern struct rcxml rc;
|
extern struct rcxml rc;
|
||||||
|
|
|
||||||
|
|
@ -1142,6 +1142,8 @@ entry(xmlNode *node, char *nodename, char *content)
|
||||||
set_bool(content, &rc.focus_follow_mouse_requires_movement);
|
set_bool(content, &rc.focus_follow_mouse_requires_movement);
|
||||||
} else if (!strcasecmp(nodename, "raiseOnFocus.focus")) {
|
} else if (!strcasecmp(nodename, "raiseOnFocus.focus")) {
|
||||||
set_bool(content, &rc.raise_on_focus);
|
set_bool(content, &rc.raise_on_focus);
|
||||||
|
} else if (!strcasecmp(nodename, "focusOnTitlebarEnter.focus")) {
|
||||||
|
set_bool(content, &rc.focus_titlebar_on_mouse_enter);
|
||||||
} else if (!strcasecmp(nodename, "doubleClickTime.mouse")) {
|
} else if (!strcasecmp(nodename, "doubleClickTime.mouse")) {
|
||||||
long doubleclick_time_parsed = strtol(content, NULL, 10);
|
long doubleclick_time_parsed = strtol(content, NULL, 10);
|
||||||
if (doubleclick_time_parsed > 0) {
|
if (doubleclick_time_parsed > 0) {
|
||||||
|
|
@ -1406,6 +1408,9 @@ rcxml_init(void)
|
||||||
}
|
}
|
||||||
has_run = true;
|
has_run = true;
|
||||||
|
|
||||||
|
/* default: don't focus on titlebar enter */
|
||||||
|
rc.focus_titlebar_on_mouse_enter = false;
|
||||||
|
|
||||||
rc.placement_policy = LAB_PLACE_CASCADE;
|
rc.placement_policy = LAB_PLACE_CASCADE;
|
||||||
rc.placement_cascade_offset_x = 0;
|
rc.placement_cascade_offset_x = 0;
|
||||||
rc.placement_cascade_offset_y = 0;
|
rc.placement_cascade_offset_y = 0;
|
||||||
|
|
|
||||||
|
|
@ -563,6 +563,15 @@ cursor_update_common(struct server *server, struct cursor_context *ctx,
|
||||||
* a drag operation.
|
* a drag operation.
|
||||||
*/
|
*/
|
||||||
wlr_seat_pointer_notify_clear_focus(wlr_seat);
|
wlr_seat_pointer_notify_clear_focus(wlr_seat);
|
||||||
|
/* Optional: focus toplevel when entering SSD titlebar/title/buttons */
|
||||||
|
if (rc.focus_follow_mouse && rc.focus_titlebar_on_mouse_enter && ctx->view) {
|
||||||
|
/* Titlebar region, window title, or any titlebar button */
|
||||||
|
if (ctx->type == LAB_NODE_TITLEBAR || ctx->type == LAB_NODE_TITLE
|
||||||
|
|| node_type_contains(LAB_NODE_BUTTON, ctx->type)) {
|
||||||
|
desktop_focus_view_or_surface(&server->seat,
|
||||||
|
ctx->view, NULL, rc.raise_on_focus);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (!seat->drag.active) {
|
if (!seat->drag.active) {
|
||||||
enum lab_cursors cursor = cursor_get_from_ssd(ctx->type);
|
enum lab_cursors cursor = cursor_get_from_ssd(ctx->type);
|
||||||
if (ctx->view && ctx->view->shaded && cursor > LAB_CURSOR_GRAB) {
|
if (ctx->view && ctx->view->shaded && cursor > LAB_CURSOR_GRAB) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue