mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
ssd: make sizes of invisible SSD extents configurable
This commit is contained in:
parent
fa6e524412
commit
6b9cc5dd64
6 changed files with 20 additions and 8 deletions
|
|
@ -583,6 +583,13 @@ extending outward from the snapped edge.
|
||||||
horizontally and vertically rather than one or the other. Default is
|
horizontally and vertically rather than one or the other. Default is
|
||||||
half the titlebar height.
|
half the titlebar height.
|
||||||
|
|
||||||
|
*<resize><minimumArea>*
|
||||||
|
Treat borders of server-side decorations as if they were at least the
|
||||||
|
indicated thickness, regardless of their visual size. Borders visually
|
||||||
|
narrower than the minimum effective thickness will be augmented with
|
||||||
|
invisible zones just beyond the window that serve as click targets for
|
||||||
|
mouse actions. Default is 8.
|
||||||
|
|
||||||
## KEYBOARD
|
## KEYBOARD
|
||||||
|
|
||||||
*<keyboard><numlock>* [on|off]
|
*<keyboard><numlock>* [on|off]
|
||||||
|
|
|
||||||
|
|
@ -132,6 +132,8 @@
|
||||||
<!-- Let client redraw its contents while resizing -->
|
<!-- Let client redraw its contents while resizing -->
|
||||||
<drawContents>yes</drawContents>
|
<drawContents>yes</drawContents>
|
||||||
<cornerRange>8</cornerRange>
|
<cornerRange>8</cornerRange>
|
||||||
|
<!-- Borders are effectively 8 pixels wide regardless of visual appearance -->
|
||||||
|
<minimumArea>8</minimumArea>
|
||||||
</resize>
|
</resize>
|
||||||
|
|
||||||
<focus>
|
<focus>
|
||||||
|
|
|
||||||
|
|
@ -152,6 +152,7 @@ struct rcxml {
|
||||||
enum resize_indicator_mode resize_indicator;
|
enum resize_indicator_mode resize_indicator;
|
||||||
bool resize_draw_contents;
|
bool resize_draw_contents;
|
||||||
int resize_corner_range;
|
int resize_corner_range;
|
||||||
|
int resize_minimum_area;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
int popuptime;
|
int popuptime;
|
||||||
|
|
|
||||||
|
|
@ -7,8 +7,6 @@
|
||||||
|
|
||||||
struct wlr_cursor;
|
struct wlr_cursor;
|
||||||
|
|
||||||
#define SSD_EXTENDED_AREA 8
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Shadows should start at a point inset from the actual window border, see
|
* Shadows should start at a point inset from the actual window border, see
|
||||||
* discussion on https://github.com/labwc/labwc/pull/1648. This constant
|
* discussion on https://github.com/labwc/labwc/pull/1648. This constant
|
||||||
|
|
|
||||||
|
|
@ -1225,6 +1225,8 @@ entry(xmlNode *node, char *nodename, char *content, struct parser_state *state)
|
||||||
set_bool(content, &rc.resize_draw_contents);
|
set_bool(content, &rc.resize_draw_contents);
|
||||||
} else if (!strcasecmp(nodename, "cornerRange.resize")) {
|
} else if (!strcasecmp(nodename, "cornerRange.resize")) {
|
||||||
rc.resize_corner_range = atoi(content);
|
rc.resize_corner_range = atoi(content);
|
||||||
|
} else if (!strcasecmp(nodename, "minimumArea.resize")) {
|
||||||
|
rc.resize_minimum_area = MAX(0, atoi(content));
|
||||||
} else if (!strcasecmp(nodename, "mouseEmulation.tablet")) {
|
} else if (!strcasecmp(nodename, "mouseEmulation.tablet")) {
|
||||||
set_bool(content, &rc.tablet.force_mouse_emulation);
|
set_bool(content, &rc.tablet.force_mouse_emulation);
|
||||||
} else if (!strcasecmp(nodename, "mapToOutput.tablet")) {
|
} else if (!strcasecmp(nodename, "mapToOutput.tablet")) {
|
||||||
|
|
@ -1501,6 +1503,7 @@ rcxml_init(void)
|
||||||
rc.resize_indicator = LAB_RESIZE_INDICATOR_NEVER;
|
rc.resize_indicator = LAB_RESIZE_INDICATOR_NEVER;
|
||||||
rc.resize_draw_contents = true;
|
rc.resize_draw_contents = true;
|
||||||
rc.resize_corner_range = -1;
|
rc.resize_corner_range = -1;
|
||||||
|
rc.resize_minimum_area = 8;
|
||||||
|
|
||||||
rc.workspace_config.popuptime = INT_MIN;
|
rc.workspace_config.popuptime = INT_MIN;
|
||||||
rc.workspace_config.min_nr_workspaces = 1;
|
rc.workspace_config.min_nr_workspaces = 1;
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@
|
||||||
#include <pixman.h>
|
#include <pixman.h>
|
||||||
#include "common/mem.h"
|
#include "common/mem.h"
|
||||||
#include "common/scene-helpers.h"
|
#include "common/scene-helpers.h"
|
||||||
|
#include "config/rcxml.h"
|
||||||
#include "labwc.h"
|
#include "labwc.h"
|
||||||
#include "ssd-internal.h"
|
#include "ssd-internal.h"
|
||||||
#include "theme.h"
|
#include "theme.h"
|
||||||
|
|
@ -25,7 +26,8 @@ ssd_extents_create(struct ssd *ssd)
|
||||||
struct view *view = ssd->view;
|
struct view *view = ssd->view;
|
||||||
struct theme *theme = view->server->theme;
|
struct theme *theme = view->server->theme;
|
||||||
struct wl_list *part_list = &ssd->extents.parts;
|
struct wl_list *part_list = &ssd->extents.parts;
|
||||||
int extended_area = SSD_EXTENDED_AREA;
|
|
||||||
|
int border_width = MAX(0, MAX(rc.resize_minimum_area, theme->border_width));
|
||||||
|
|
||||||
ssd->extents.tree = wlr_scene_tree_create(ssd->tree);
|
ssd->extents.tree = wlr_scene_tree_create(ssd->tree);
|
||||||
struct wlr_scene_tree *parent = ssd->extents.tree;
|
struct wlr_scene_tree *parent = ssd->extents.tree;
|
||||||
|
|
@ -34,8 +36,7 @@ ssd_extents_create(struct ssd *ssd)
|
||||||
}
|
}
|
||||||
wl_list_init(&ssd->extents.parts);
|
wl_list_init(&ssd->extents.parts);
|
||||||
wlr_scene_node_set_position(&parent->node,
|
wlr_scene_node_set_position(&parent->node,
|
||||||
-(theme->border_width + extended_area),
|
-border_width, -(ssd->titlebar.height + border_width));
|
||||||
-(ssd->titlebar.height + theme->border_width + extended_area));
|
|
||||||
|
|
||||||
add_extent(part_list, LAB_SSD_PART_TOP, parent);
|
add_extent(part_list, LAB_SSD_PART_TOP, parent);
|
||||||
add_extent(part_list, LAB_SSD_PART_LEFT, parent);
|
add_extent(part_list, LAB_SSD_PART_LEFT, parent);
|
||||||
|
|
@ -68,7 +69,8 @@ ssd_extents_update(struct ssd *ssd)
|
||||||
int height = view_effective_height(view, /* use_pending */ false);
|
int height = view_effective_height(view, /* use_pending */ false);
|
||||||
int full_height = height + theme->border_width * 2 + ssd->titlebar.height;
|
int full_height = height + theme->border_width * 2 + ssd->titlebar.height;
|
||||||
int full_width = width + 2 * theme->border_width;
|
int full_width = width + 2 * theme->border_width;
|
||||||
int extended_area = SSD_EXTENDED_AREA;
|
int border_width = MAX(rc.resize_minimum_area, theme->border_width);
|
||||||
|
int extended_area = MAX(0, rc.resize_minimum_area - theme->border_width);
|
||||||
|
|
||||||
struct wlr_box part_box;
|
struct wlr_box part_box;
|
||||||
struct wlr_box result_box;
|
struct wlr_box result_box;
|
||||||
|
|
@ -78,8 +80,7 @@ ssd_extents_update(struct ssd *ssd)
|
||||||
|
|
||||||
/* Make sure we update the y offset based on titlebar shown / hidden */
|
/* Make sure we update the y offset based on titlebar shown / hidden */
|
||||||
wlr_scene_node_set_position(&ssd->extents.tree->node,
|
wlr_scene_node_set_position(&ssd->extents.tree->node,
|
||||||
-(theme->border_width + extended_area),
|
-border_width, -(ssd->titlebar.height + border_width));
|
||||||
-(ssd->titlebar.height + theme->border_width + extended_area));
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Convert all output usable areas that the
|
* Convert all output usable areas that the
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue