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" />

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;