diff --unified --recursive --text fvwm-2.6.9/fvwm/fvwm.h fvwm-patched/fvwm/fvwm.h --- fvwm-2.6.9/fvwm/fvwm.h 2020-08-21 15:30:39.091737766 -0600 +++ fvwm-patched/fvwm/fvwm.h 2020-08-21 15:42:30.000309012 -0600 @@ -222,6 +222,7 @@ unsigned do_not_show_on_map : 1; unsigned do_raise_transient : 1; unsigned do_resize_opaque : 1; + unsigned do_resize_outline_thin : 1; unsigned do_shrink_windowshade : 1; unsigned do_stack_transient_parent : 1; unsigned do_window_list_skip : 1; diff --unified --recursive --text fvwm-2.6.9/fvwm/move_resize.c fvwm-patched/fvwm/move_resize.c --- fvwm-2.6.9/fvwm/move_resize.c 2018-05-30 16:28:25.000000000 -0600 +++ fvwm-patched/fvwm/move_resize.c 2020-08-21 15:45:34.999041350 -0600 @@ -98,7 +98,7 @@ extern Window PressedW; -static void draw_move_resize_grid(int x, int y, int width, int height); +static void draw_move_resize_grid(int x, int y, int width, int height, Bool thin); /* ----- end of resize globals ----- */ @@ -116,26 +116,33 @@ * */ static int get_outline_rects( - XRectangle *rects, int x, int y, int width, int height) + XRectangle *rects, int x, int y, int width, int height, Bool do_outline_thin) { int i; int n; int m; - n = 3; - m = (width - 5) / 2; - if (m < n) + if (do_outline_thin) { - n = m; - } - m = (height - 5) / 2; - if (m < n) - { - n = m; + n = 1; } - if (n < 1) + else { - n = 1; + n = 3; + m = (width - 5) / 2; + if (m < n) + { + n = m; + } + m = (height - 5) / 2; + if (m < n) + { + n = m; + } + if (n < 1) + { + n = 1; + } } for (i = 0; i < n; i++) @@ -145,25 +152,28 @@ rects[i].width = width - (i << 1); rects[i].height = height - (i << 1); } - if (width - (n << 1) >= 5 && height - (n << 1) >= 5) + if (!do_outline_thin) { - if (width - (n << 1) >= 10) + if (width - (n << 1) >= 5 && height - (n << 1) >= 5) { - int off = (width - (n << 1)) / 3 + n; - rects[i].x = x + off; - rects[i].y = y + n; - rects[i].width = width - (off << 1); - rects[i].height = height - (n << 1); - i++; - } - if (height - (n << 1) >= 10) - { - int off = (height - (n << 1)) / 3 + n; - rects[i].x = x + n; - rects[i].y = y + off; - rects[i].width = width - (n << 1); - rects[i].height = height - (off << 1); - i++; + if (width - (n << 1) >= 10) + { + int off = (width - (n << 1)) / 3 + n; + rects[i].x = x + off; + rects[i].y = y + n; + rects[i].width = width - (off << 1); + rects[i].height = height - (n << 1); + i++; + } + if (height - (n << 1) >= 10) + { + int off = (height - (n << 1)) / 3 + n; + rects[i].x = x + n; + rects[i].y = y + off; + rects[i].width = width - (n << 1); + rects[i].height = height - (off << 1); + i++; + } } } @@ -176,14 +186,15 @@ struct { unsigned is_enabled : 1; + unsigned do_outline_thin : 1; } flags; } move_resize_grid = { { 0, 0, 0, 0 }, - { 0 } + { 0, 0 } }; -static void draw_move_resize_grid(int x, int y, int width, int height) +static void draw_move_resize_grid(int x, int y, int width, int height, Bool do_outline_thin) { int nrects = 0; XRectangle rects[10]; @@ -192,7 +203,8 @@ x == move_resize_grid.geom.x && y == move_resize_grid.geom.y && width == move_resize_grid.geom.width && - height == move_resize_grid.geom.height) + height == move_resize_grid.geom.height && + do_outline_thin == move_resize_grid.flags.do_outline_thin) { return; } @@ -210,7 +222,8 @@ &(rects[0]), move_resize_grid.geom.x, move_resize_grid.geom.y, move_resize_grid.geom.width, - move_resize_grid.geom.height); + move_resize_grid.geom.height, + move_resize_grid.flags.do_outline_thin); } if (width && height) { @@ -219,8 +232,9 @@ move_resize_grid.geom.y = y; move_resize_grid.geom.width = width; move_resize_grid.geom.height = height; + move_resize_grid.flags.do_outline_thin = do_outline_thin; nrects += get_outline_rects( - &(rects[nrects]), x, y, width, height); + &(rects[nrects]), x, y, width, height, do_outline_thin); } if (nrects > 0) { @@ -237,14 +251,15 @@ { if (move_resize_grid.flags.is_enabled) { - draw_move_resize_grid(0, 0, 0, 0); + draw_move_resize_grid(0, 0, 0, 0, 0); } else { move_resize_grid.geom.x = 0; move_resize_grid.geom.y = 0; move_resize_grid.geom.width = 0; - move_resize_grid.geom.height = 0; + move_resize_grid.geom.height = 0; + move_resize_grid.flags.do_outline_thin = 0; } } else if (!move_resize_grid.flags.is_enabled) @@ -256,7 +271,8 @@ move_resize_grid.geom.x, move_resize_grid.geom.y, move_resize_grid.geom.width, - move_resize_grid.geom.height); + move_resize_grid.geom.height, + move_resize_grid.flags.do_outline_thin); } } @@ -2341,6 +2357,7 @@ /* Must not set placed by button if the event is a modified KeyEvent */ Bool is_fake_event; FvwmWindow *fw = exc->w.fw; + Bool do_outline_thin = DO_RESIZE_OUTLINE_THIN(fw); unsigned int draw_parts = PART_NONE; XEvent e; @@ -2414,7 +2431,7 @@ if (!IS_ICONIFIED(fw) && ((!do_move_opaque && !Scr.gs.do_emulate_mwm) || !IS_MAPPED(fw))) { - draw_move_resize_grid(xl, yt, Width - 1, Height - 1); + draw_move_resize_grid(xl, yt, Width - 1, Height - 1, do_outline_thin); } if (move_w == FW_W_FRAME(fw) && do_move_opaque) @@ -2757,7 +2774,7 @@ if (!do_move_opaque) { draw_move_resize_grid( - xl, yt, Width - 1, Height - 1); + xl, yt, Width - 1, Height - 1, do_outline_thin); } else { @@ -2833,7 +2850,7 @@ if (!do_move_opaque) { draw_move_resize_grid( - xl, yt, Width - 1, Height - 1); + xl, yt, Width - 1, Height - 1, do_outline_thin); } break; @@ -3453,7 +3470,7 @@ static void __resize_step( const exec_context_t *exc, int x_root, int y_root, int *x_off, int *y_off, rectangle *drag, const rectangle *orig, int *xmotionp, - int *ymotionp, Bool do_resize_opaque, Bool is_direction_fixed) + int *ymotionp, Bool do_resize_opaque, Bool is_direction_fixed, Bool do_outline_thin) { int action = 0; int x2; @@ -3575,7 +3592,7 @@ { draw_move_resize_grid( drag->x, drag->y, drag->width - 1, - drag->height - 1); + drag->height - 1, do_outline_thin); } else { @@ -3634,6 +3651,7 @@ int x_off; int y_off; direction_t dir; + Bool do_outline_thin = DO_RESIZE_OUTLINE_THIN(fw); int warp_x = 0; int warp_y = 0; @@ -3956,7 +3974,7 @@ if (!do_resize_opaque) { draw_move_resize_grid( - drag->x, drag->y, drag->width - 1, drag->height - 1); + drag->x, drag->y, drag->width - 1, drag->height - 1, do_outline_thin); } /* kick off resizing without requiring any motion if invoked with a key * press */ @@ -3977,7 +3995,7 @@ yo = 0; __resize_step( exc, stashed_x, stashed_y, &xo, &yo, drag, orig, - &xmotion, &ymotion, do_resize_opaque, True); + &xmotion, &ymotion, do_resize_opaque, True, do_outline_thin); } else { @@ -4139,7 +4157,7 @@ __resize_step( exc, x, y, &x_off, &y_off, drag, orig, &xmotion, &ymotion, do_resize_opaque, - is_direction_fixed); + is_direction_fixed, do_outline_thin); is_resized = True; /* need to move the viewport */ HandlePaging( @@ -4158,7 +4176,7 @@ __resize_step( exc, x, y, &x_off, &y_off, drag, orig, &xmotion, &ymotion, do_resize_opaque, - is_direction_fixed); + is_direction_fixed, do_outline_thin); is_resized = True; } fForceRedraw = False; @@ -4194,7 +4212,7 @@ { draw_move_resize_grid( drag->x, drag->y, drag->width - 1, - drag->height - 1); + drag->height - 1, do_outline_thin); } } else @@ -4255,7 +4273,7 @@ g = sorig; __resize_step( exc, sorig.x, sorig.y, &xo, &yo, &g, orig, - &xmotion, &ymotion, do_resize_opaque, True); + &xmotion, &ymotion, do_resize_opaque, True, do_outline_thin); } if (vx != Scr.Vx || vy != Scr.Vy) { Only in fvwm-patched/fvwm: move_resize.c.orig diff --unified --recursive --text fvwm-2.6.9/fvwm/style.c fvwm-patched/fvwm/style.c --- fvwm-2.6.9/fvwm/style.c 2020-08-21 15:30:39.091737766 -0600 +++ fvwm-patched/fvwm/style.c 2020-08-21 15:40:46.901822038 -0600 @@ -4044,6 +4044,12 @@ S_SET_DO_RESIZE_OPAQUE(SCM(*ps), 1); S_SET_DO_RESIZE_OPAQUE(SCC(*ps), 1); } + else if (StrEquals(token, "ResizeOutlineThin")) + { + S_SET_DO_RESIZE_OUTLINE_THIN(SCF(*ps), on); + S_SET_DO_RESIZE_OUTLINE_THIN(SCM(*ps), 1); + S_SET_DO_RESIZE_OUTLINE_THIN(SCC(*ps), 1); + } else if (StrEquals(token, "RightTitleRotatedCW")) { S_SET_IS_RIGHT_TITLE_ROTATED_CW(SCF(*ps), on); Only in fvwm-patched/fvwm: style.c.orig diff --unified --recursive --text fvwm-2.6.9/fvwm/style.h fvwm-patched/fvwm/style.h --- fvwm-2.6.9/fvwm/style.h 2020-08-21 15:30:39.091737766 -0600 +++ fvwm-patched/fvwm/style.h 2020-08-21 15:40:46.901822038 -0600 @@ -225,6 +225,10 @@ ((c).s.do_resize_opaque) #define S_SET_DO_RESIZE_OPAQUE(c,x) \ ((c).s.do_resize_opaque = !!(x)) +#define S_DO_RESIZE_OUTLINE_THIN(c) \ + ((c).s.do_resize_outline_thin) +#define S_SET_DO_RESIZE_OUTLINE_THIN(c,x) \ + ((c).s.do_resize_outline_thin = !!(x)) #define S_DO_SHRINK_WINDOWSHADE(c) \ ((c).s.do_shrink_windowshade) #define S_SET_DO_SHRINK_WINDOWSHADE(c,x) \ Only in fvwm-patched/fvwm: style.h.orig diff --unified --recursive --text fvwm-2.6.9/fvwm/window_flags.h fvwm-patched/fvwm/window_flags.h --- fvwm-2.6.9/fvwm/window_flags.h 2016-10-15 08:51:45.000000000 -0600 +++ fvwm-patched/fvwm/window_flags.h 2020-08-21 15:40:46.905822149 -0600 @@ -21,6 +21,8 @@ ((fw)->flags.common.s.do_raise_transient) #define DO_RESIZE_OPAQUE(fw) \ ((fw)->flags.common.s.do_resize_opaque) +#define DO_RESIZE_OUTLINE_THIN(fw) \ + ((fw)->flags.common.s.do_resize_outline_thin) #define DO_SHRINK_WINDOWSHADE(fw) \ ((fw)->flags.common.s.do_shrink_windowshade) #define SET_DO_SHRINK_WINDOWSHADE(fw,x) \