diff options
Diffstat (limited to '06-BorderUnderTitle.patch')
-rw-r--r-- | 06-BorderUnderTitle.patch | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/06-BorderUnderTitle.patch b/06-BorderUnderTitle.patch new file mode 100644 index 000000000000..3d9d096e7421 --- /dev/null +++ b/06-BorderUnderTitle.patch @@ -0,0 +1,213 @@ +diff --unified --recursive --text fvwm-2.6.9/fvwm/borders.c fvwm-patched/fvwm/borders.c +--- fvwm-2.6.9/fvwm/borders.c 2020-08-21 15:30:39.087737712 -0600 ++++ fvwm-patched/fvwm/borders.c 2020-08-21 15:58:30.667261464 -0600 +@@ -4983,6 +4983,7 @@ + rectangle *ret_g, Window *ret_w) + { + int bw; ++ Bool title; + + bw = fw->boundary_width; + /* ret_g->x and ret->y is just an offset relatively to the w, +@@ -5053,7 +5054,32 @@ + ret_g->height = sidebar_g->y; + break; + default: +- return; ++ break; ++ } ++ ++ if (HAS_BORDER_UNDER_TITLE(fw)) ++ { ++ title = False; ++ switch (GET_TITLE_DIR(fw)) ++ { ++ case DIR_N: title = part & PART_TOP; break; ++ case DIR_E: title = part & PART_RIGHT; break; ++ case DIR_S: title = part & PART_BOTTOM; break; ++ case DIR_W: title = part & PART_LEFT; break; ++ } ++ if (title) ++ { ++ ret_g->width = max(ret_g->width, 2 * bw + fw->title_thickness); ++ ret_g->height = max(ret_g->height, 2 * bw + fw->title_thickness); ++ if (part & PART_RIGHT) ++ { ++ ret_g->x = 2 * sidebar_g->x + sidebar_g->width - ret_g->width; ++ } ++ if (part & PART_BOTTOM) ++ { ++ ret_g->y = 2 * sidebar_g->y + sidebar_g->height - ret_g->height; ++ } ++ } + } + + return; +Only in fvwm-patched/fvwm: borders.c.orig +diff --unified --recursive --text fvwm-2.6.9/fvwm/borders.h fvwm-patched/fvwm/borders.h +--- fvwm-2.6.9/fvwm/borders.h 2016-10-15 08:51:45.000000000 -0600 ++++ fvwm-patched/fvwm/borders.h 2020-08-21 15:58:30.667261464 -0600 +@@ -36,7 +36,12 @@ + PART_FRAME = 0xff, + PART_TITLEBAR = 0x300, + PART_HANDLES = 0xc00, +- PART_ALL = 0xfff ++ PART_ALL = 0xfff, ++ ++ PART_TOP = 0x31, ++ PART_BOTTOM = 0xc2, ++ PART_LEFT = 0x58, ++ PART_RIGHT = 0xa4 + } window_parts; + + typedef enum +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:48:43.507505372 -0600 ++++ fvwm-patched/fvwm/fvwm.h 2020-08-21 15:58:30.667261464 -0600 +@@ -268,6 +268,7 @@ + #define WINDOWSHADE_LAZY_MASK 0x3 + unsigned windowshade_laziness : 2; + unsigned use_title_decor_rotation : 1; ++ unsigned has_border_under_title : 1; + focus_policy_t focus_policy; + } s; + } common_flags_t; +Only in fvwm-patched/fvwm: fvwm.h.orig +diff --unified --recursive --text fvwm-2.6.9/fvwm/geometry.c fvwm-patched/fvwm/geometry.c +--- fvwm-2.6.9/fvwm/geometry.c 2018-04-28 05:46:28.000000000 -0600 ++++ fvwm-patched/fvwm/geometry.c 2020-08-21 16:02:53.280322490 -0600 +@@ -45,6 +45,9 @@ + + /* ---------------------------- forward declarations ----------------------- */ + ++static void __get_window_borders( ++ const FvwmWindow *fw, size_borders *borders, Bool is_shaded); ++ + /* ---------------------------- local variables ---------------------------- */ + + /* ---------------------------- exported variables (globals) --------------- */ +@@ -351,7 +354,7 @@ + get_window_borders_no_title(fw, &b); + break; + default: +- get_window_borders(fw, &b); ++ __get_window_borders(fw, &b, 1); + break; + } + *small_g = *big_g; +@@ -479,23 +482,38 @@ + void get_window_borders( + const FvwmWindow *fw, size_borders *borders) + { ++ __get_window_borders(fw, borders, 0); ++} ++ ++static void __get_window_borders( ++ const FvwmWindow *fw, size_borders *borders, Bool is_shaded) ++{ ++ int title_thickness; ++ + borders->top_left.width = fw->boundary_width; + borders->bottom_right.width = fw->boundary_width; + borders->top_left.height = fw->boundary_width; + borders->bottom_right.height = fw->boundary_width; ++ ++ title_thickness = fw->title_thickness; ++ if (HAS_TITLE(fw) && HAS_BORDER_UNDER_TITLE(fw) && !is_shaded) ++ { ++ title_thickness += fw->boundary_width; ++ } ++ + switch (GET_TITLE_DIR(fw)) + { + case DIR_N: +- borders->top_left.height += fw->title_thickness; ++ borders->top_left.height += title_thickness; + break; + case DIR_S: +- borders->bottom_right.height += fw->title_thickness; ++ borders->bottom_right.height += title_thickness; + break; + case DIR_W: +- borders->top_left.width += fw->title_thickness; ++ borders->top_left.width += title_thickness; + break; + case DIR_E: +- borders->bottom_right.width += fw->title_thickness; ++ borders->bottom_right.width += title_thickness; + break; + } + borders->total_size.width = +Only in fvwm-patched/fvwm: geometry.c.orig +diff --unified --recursive --text fvwm-2.6.9/fvwm/geometry.h fvwm-patched/fvwm/geometry.h +--- fvwm-2.6.9/fvwm/geometry.h 2016-10-15 08:51:45.000000000 -0600 ++++ fvwm-patched/fvwm/geometry.h 2020-08-21 15:58:30.667261464 -0600 +@@ -44,6 +44,8 @@ + FvwmWindow *fw, rectangle *ret_g); + void get_window_borders( + const FvwmWindow *fw, size_borders *borders); ++void get_window_borders_shaded( ++ const FvwmWindow *fw, size_borders *borders); + void get_window_borders_no_title( + const FvwmWindow *fw, size_borders *borders); + void set_window_border_size( +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:48:43.507505372 -0600 ++++ fvwm-patched/fvwm/style.c 2020-08-21 15:58:30.671261536 -0600 +@@ -2247,6 +2247,12 @@ + { + rest = style_parse_button_style(ps, rest, on); + } ++ else if (StrEquals(token, "BORDERUNDERTITLE")) ++ { ++ S_SET_HAS_BORDER_UNDER_TITLE(SCF(*ps), on); ++ S_SET_HAS_BORDER_UNDER_TITLE(SCM(*ps), 1); ++ S_SET_HAS_BORDER_UNDER_TITLE(SCC(*ps), 1); ++ } + else if (StrEquals(token, "BorderWidth")) + { + if (GetIntegerArguments(rest, &rest, val, 1)) +@@ -5184,6 +5190,11 @@ + { + flags->do_update_rotated_title = 1; + } ++ ++ if (S_HAS_BORDER_UNDER_TITLE(SCC(*ret_style))) ++ { ++ flags->do_redecorate = True; ++ } + + /* has_mwm_border + * has_mwm_buttons */ +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:48:43.511505397 -0600 ++++ fvwm-patched/fvwm/style.h 2020-08-21 15:58:30.671261536 -0600 +@@ -369,6 +369,10 @@ + ((c).s.use_title_decor_rotation) + #define S_SET_USE_TITLE_DECOR_ROTATION(c,x) \ + ((c).s.use_title_decor_rotation = !!(x)) ++#define S_HAS_BORDER_UNDER_TITLE(c) \ ++ ((c).s.has_border_under_title) ++#define S_SET_HAS_BORDER_UNDER_TITLE(c,x) \ ++ ((c).s.has_border_under_title = !!(x)) + #define S_DO_EWMH_MINI_ICON_OVERRIDE(c) \ + ((c).s.do_ewmh_mini_icon_override) + #define S_SET_DO_EWMH_MINI_ICON_OVERRIDE(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 2020-08-21 15:48:43.511505397 -0600 ++++ fvwm-patched/fvwm/window_flags.h 2020-08-21 15:58:30.671261536 -0600 +@@ -328,6 +328,12 @@ + (fw)->flags.common.s.use_title_decor_rotation = !!(x) + #define SETM_USE_TITLE_DECOR_ROTATION(fw,x) \ + (fw)->flag_mask.common.s.use_title_decor_rotation = !!(x) ++#define HAS_BORDER_UNDER_TITLE(fw) \ ++ ((fw)->flags.common.s.has_border_under_title) ++#define SET_HAS_BORDER_UNDER_TITLE(fw,x) \ ++ (fw)->flags.common.s.has_border_under_title = !!(x) ++#define SETM_HAS_BORDER_UNDER_TITLE(fw,x) \ ++ (fw)->flag_mask.common.s.has_border_under_title = !!(x) + + /* access to the special flags of a window */ + #define DO_REUSE_DESTROYED(fw) \ |