214 lines
7.0 KiB
Diff
214 lines
7.0 KiB
Diff
|
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) \
|