replace range with horizontalRange and verticalRange

This commit is contained in:
elviosak 2025-11-29 08:01:46 -03:00
parent 35b3980a5b
commit f89c31c2de
5 changed files with 26 additions and 16 deletions

View file

@ -498,13 +498,15 @@ activated with SnapToEdge actions or, optionally, by dragging windows to the
edges of an output. Edge snapping causes a window to occupy half of its output, edges of an output. Edge snapping causes a window to occupy half of its output,
extending outward from the snapped edge. extending outward from the snapped edge.
*<snapping><range>*++ *<snapping><horizontalRange>*++
*<snapping><verticalRange>*++
*<snapping><cornerRange>* *<snapping><cornerRange>*
If an interactive move ends with the cursor within *<range>* pixels of an If an interactive move ends with the cursor within *<horizontalRange>* pixels of
output edge, the window is snapped to the edge. If it's also within the left/right output edge, or *<verticalRange>* of the top/bottom output edge,
*<cornerRange>* pixels of an output corner, the window is snapped to the the window is snapped to the edge. If it's also within *<cornerRange>* pixels of
corner instead. A *<range>* of 0 disables snapping. an output corner, the window is snapped to the corner instead.
Default is 10 for *<range>* and 50 for *<cornerRange>*. If *<horizontalRange>* and *<verticalRange>* is 0, snapping is disabled.
Default is 10 for *<horizontalRange>* and *<verticalRange>*, and 50 for *<cornerRange>*.
*<snapping><overlay><enabled>* [yes|no] *<snapping><overlay><enabled>* [yes|no]
Show an overlay when snapping to a window to an edge. Default is yes. Show an overlay when snapping to a window to an edge. Default is yes.

View file

@ -162,7 +162,8 @@
<snapping> <snapping>
<!-- Set range to 0 to disable window snapping completely --> <!-- Set range to 0 to disable window snapping completely -->
<range>10</range> <horizontalRange>10</horizontalRange>
<verticalRange>10</verticalRange>
<cornerRange>50</cornerRange> <cornerRange>50</cornerRange>
<overlay enabled="yes"> <overlay enabled="yes">
<delay inner="500" outer="500" /> <delay inner="500" outer="500" />
@ -586,7 +587,7 @@
- sendEventsMode [yes|no|disabledOnExternalMouse] - sendEventsMode [yes|no|disabledOnExternalMouse]
- calibrationMatrix [six float values split by space] - calibrationMatrix [six float values split by space]
- scrollFactor [float] - scrollFactor [float]
The following <libinput>...</libinput> block may not be complete for The following <libinput>...</libinput> block may not be complete for
your requirements. Default values are device specific. Only set an option your requirements. Default values are device specific. Only set an option
if you require to override the default. Valid values must be inserted. if you require to override the default. Valid values must be inserted.

View file

@ -151,7 +151,8 @@ struct rcxml {
int unmaximize_threshold; int unmaximize_threshold;
/* window snapping */ /* window snapping */
int snap_edge_range; int snap_edge_horizontal_range;
int snap_edge_vertical_range;
int snap_edge_corner_range; int snap_edge_corner_range;
bool snap_overlay_enabled; bool snap_overlay_enabled;
int snap_overlay_delay_inner; int snap_overlay_delay_inner;

View file

@ -1177,7 +1177,12 @@ entry(xmlNode *node, char *nodename, char *content)
} else if (!strcasecmp(nodename, "unMaximizeThreshold.resistance")) { } else if (!strcasecmp(nodename, "unMaximizeThreshold.resistance")) {
rc.unmaximize_threshold = atoi(content); rc.unmaximize_threshold = atoi(content);
} else if (!strcasecmp(nodename, "range.snapping")) { } else if (!strcasecmp(nodename, "range.snapping")) {
rc.snap_edge_range = atoi(content); rc.snap_edge_horizontal_range = atoi(content);
rc.snap_edge_vertical_range = atoi(content);
} else if (!strcasecmp(nodename, "horizontalRange.snapping")) {
rc.snap_edge_horizontal_range = atoi(content);
} else if (!strcasecmp(nodename, "verticalRange.snapping")) {
rc.snap_edge_vertical_range = atoi(content);
} else if (!strcasecmp(nodename, "cornerRange.snapping")) { } else if (!strcasecmp(nodename, "cornerRange.snapping")) {
rc.snap_edge_corner_range = atoi(content); rc.snap_edge_corner_range = atoi(content);
} else if (!strcasecmp(nodename, "enabled.overlay.snapping")) { } else if (!strcasecmp(nodename, "enabled.overlay.snapping")) {
@ -1456,7 +1461,8 @@ rcxml_init(void)
rc.unsnap_threshold = 20; rc.unsnap_threshold = 20;
rc.unmaximize_threshold = 150; rc.unmaximize_threshold = 150;
rc.snap_edge_range = 10; rc.snap_edge_horizontal_range = 10;
rc.snap_edge_vertical_range = 10;
rc.snap_edge_corner_range = 50; rc.snap_edge_corner_range = 50;
rc.snap_overlay_enabled = true; rc.snap_overlay_enabled = true;
rc.snap_overlay_delay_inner = 500; rc.snap_overlay_delay_inner = 500;

View file

@ -186,7 +186,7 @@ edge_from_cursor(struct seat *seat, struct output **dest_output,
return false; return false;
} }
if (rc.snap_edge_range == 0) { if (rc.snap_edge_horizontal_range == 0 && rc.snap_edge_vertical_range == 0) {
return false; return false;
} }
@ -210,13 +210,13 @@ edge_from_cursor(struct seat *seat, struct output **dest_output,
int left = cursor_x - area->x; int left = cursor_x - area->x;
int right = area->x + area->width - cursor_x; int right = area->x + area->width - cursor_x;
if (top < rc.snap_edge_range) { if (top < rc.snap_edge_vertical_range) {
*edge1 = LAB_EDGE_TOP; *edge1 = LAB_EDGE_TOP;
} else if (bottom < rc.snap_edge_range) { } else if (bottom < rc.snap_edge_vertical_range) {
*edge1 = LAB_EDGE_BOTTOM; *edge1 = LAB_EDGE_BOTTOM;
} else if (left < rc.snap_edge_range) { } else if (left < rc.snap_edge_horizontal_range) {
*edge1 = LAB_EDGE_LEFT; *edge1 = LAB_EDGE_LEFT;
} else if (right < rc.snap_edge_range) { } else if (right < rc.snap_edge_horizontal_range) {
*edge1 = LAB_EDGE_RIGHT; *edge1 = LAB_EDGE_RIGHT;
} else { } else {
return false; return false;