mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 12:28:22 +01:00
wmaker: Allow configuration of window snapping detect distances.
This patch introduces two new configuration values, SnapEdgeDetect and SnapCornerDetect, which users can set to change the distance from an edge or corner at which window snapping will begin. The defaults are 1 and 10, respectively. Suggested-by: Josip Deanovic <djosip+news@linuxpages.net>
This commit is contained in:
committed by
Carlos R. Mafra
parent
791fdd1eff
commit
443a08ea16
5
NEWS
5
NEWS
@@ -17,6 +17,11 @@ Note that if "Switch workspaces while dragging windows" is selected under
|
||||
~/GNUstep/Defaults/WindowMaker, then you may only snap a window to the top or
|
||||
bottom of the screen.
|
||||
|
||||
You may set the distance (in pixels) from the edge or corner of the screen at
|
||||
which a window will begin snapping using "SnapEdgeDetect" and "SnapCornerDetect"
|
||||
in ~/GNUstep/Defaults/WindowMaker. (The defaults are 1 pixel and 10 pixels,
|
||||
respectively).
|
||||
|
||||
|
||||
Dragging maximized windows
|
||||
--------------------------
|
||||
|
||||
@@ -360,6 +360,8 @@ extern struct WPreferences {
|
||||
char no_animations; /* enable/disable animations */
|
||||
char no_autowrap; /* wrap workspace when window is moved to the edge */
|
||||
char window_snapping; /* enable window snapping */
|
||||
int snap_edge_detect; /* how far from edge to begin snap */
|
||||
int snap_corner_detect; /* how far from corner to begin snap */
|
||||
char drag_maximized_window; /* behavior when a maximized window is dragged */
|
||||
|
||||
char highlight_active_app; /* show the focused app by highlighting its icon */
|
||||
|
||||
@@ -474,6 +474,10 @@ WDefaultEntry optionList[] = {
|
||||
&wPreferences.no_autowrap, getBool, NULL, NULL, NULL},
|
||||
{"WindowSnapping", "NO", NULL,
|
||||
&wPreferences.window_snapping, getBool, NULL, NULL, NULL},
|
||||
{"SnapEdgeDetect", "1", NULL,
|
||||
&wPreferences.snap_edge_detect, getInt, NULL, NULL, NULL},
|
||||
{"SnapCornerDetect", "10", NULL,
|
||||
&wPreferences.snap_corner_detect, getInt, NULL, NULL, NULL},
|
||||
{"DragMaximizedWindow", "Move", seDragMaximizedWindow,
|
||||
&wPreferences.drag_maximized_window, getEnum, NULL, NULL, NULL},
|
||||
{"HighlightActiveApp", "YES", NULL,
|
||||
|
||||
@@ -1240,23 +1240,28 @@ static void draw_snap_frame(WWindow *wwin, int direction)
|
||||
|
||||
static int get_snap_direction(WScreen *scr, int x, int y)
|
||||
{
|
||||
if (x < 1) {
|
||||
if (y < 1)
|
||||
int edge, corner;
|
||||
|
||||
edge = wPreferences.snap_edge_detect;
|
||||
corner = wPreferences.snap_corner_detect;
|
||||
|
||||
if (x < corner && y < corner)
|
||||
return SNAP_TOPLEFT;
|
||||
if (y > scr->scr_height - 2)
|
||||
if (x < corner && y >= scr->scr_height - corner)
|
||||
return SNAP_BOTTOMLEFT;
|
||||
if (x < edge)
|
||||
return SNAP_LEFT;
|
||||
}
|
||||
if (x > scr->scr_width - 2) {
|
||||
if (y < 1)
|
||||
|
||||
if (x >= scr->scr_width - corner && y < corner)
|
||||
return SNAP_TOPRIGHT;
|
||||
if (y > scr->scr_height - 2)
|
||||
if (x >= scr->scr_width - corner && y >= scr->scr_height - corner)
|
||||
return SNAP_BOTTOMRIGHT;
|
||||
if (x >= scr->scr_width - edge)
|
||||
return SNAP_RIGHT;
|
||||
}
|
||||
if (y < 1)
|
||||
|
||||
if (y < edge)
|
||||
return SNAP_TOP;
|
||||
if (y > scr->scr_height - 2)
|
||||
if (y >= scr->scr_height - edge)
|
||||
return SNAP_BOTTOM;
|
||||
return SNAP_NONE;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user