kiss-mfavila-small/ports/unofficial/stable/fvwm-patched/patches/09-TopBorder.patch

201 lines
6.3 KiB
Diff

diff --unified --recursive --text fvwm-2.6.9/fvwm/builtins.c fvwm-patched/fvwm/builtins.c
--- fvwm-2.6.9/fvwm/builtins.c 2018-05-27 09:47:03.000000000 -0600
+++ fvwm-patched/fvwm/builtins.c 2020-08-21 16:10:56.462693301 -0600
@@ -482,6 +482,21 @@
if (action)
action += next;
}
+ else if (!do_add && StrEquals(parm,"buttonwidth"))
+ {
+ int width = 0;
+ int next = 0;
+
+ sscanf(action, "%d%n", &width, &next);
+
+ if (decor->button_width != width)
+ {
+ decor->button_width = width;
+ decor->flags.has_changed = 1;
+ }
+ if (action)
+ action += next;
+ }
else if (!do_add && StrEquals(parm,"MinHeight"))
{
int height = 0;
Only in fvwm-patched/fvwm: builtins.c.orig
diff --unified --recursive --text fvwm-2.6.9/fvwm/frame.c fvwm-patched/fvwm/frame.c
--- fvwm-2.6.9/fvwm/frame.c 2020-08-21 16:09:27.172710920 -0600
+++ fvwm-patched/fvwm/frame.c 2020-08-21 16:10:56.466693390 -0600
@@ -1372,7 +1372,14 @@
tb_thick = fw->title_thickness;
nbuttons = fw->nr_left_buttons + fw->nr_right_buttons;
nbuttons_big = 0;
- b_length = tb_thick;
+ if (fw->decor->button_width == 0)
+ {
+ b_length = tb_thick;
+ }
+ else
+ {
+ b_length = fw->decor->button_width;
+ }
t_length = tb_length - nbuttons * b_length;
if (nbuttons > 0 && t_length < MIN_WINDOW_TITLE_LENGTH)
{
Only in fvwm-patched/fvwm: frame.c.orig
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 16:09:27.172710920 -0600
+++ fvwm-patched/fvwm/fvwm.h 2020-08-21 16:10:56.466693390 -0600
@@ -274,6 +274,7 @@
unsigned has_rounded_corners_top : 1;
unsigned has_rounded_corners_bottom : 1;
unsigned has_slightly_rounded_corners : 1;
+ unsigned has_no_top_border : 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 2020-08-21 16:09:27.176711008 -0600
+++ fvwm-patched/fvwm/geometry.c 2020-08-21 16:10:56.466693390 -0600
@@ -489,6 +489,7 @@
const FvwmWindow *fw, size_borders *borders, Bool is_shaded)
{
int title_thickness;
+ int *title_border = NULL;
int bw;
bw = HAS_FLUXBOX_HANDLES(fw) ? 1 : fw->boundary_width;
@@ -506,18 +507,25 @@
switch (GET_TITLE_DIR(fw))
{
case DIR_N:
- borders->top_left.height += title_thickness;
+ title_border = &borders->top_left.height;
break;
case DIR_S:
- borders->bottom_right.height += title_thickness;
+ title_border = &borders->bottom_right.height;
break;
case DIR_W:
- borders->top_left.width += title_thickness;
+ title_border = &borders->top_left.width;
break;
case DIR_E:
- borders->bottom_right.width += title_thickness;
+ title_border = &borders->bottom_right.width;
break;
}
+
+ if (HAS_NO_TOP_BORDER(fw))
+ {
+ *title_border = 1;
+ }
+ *title_border += title_thickness;
+
borders->total_size.width =
borders->top_left.width + borders->bottom_right.width;
borders->total_size.height =
@@ -538,6 +546,26 @@
borders->bottom_right.width = bw;
borders->top_left.height = bw;
borders->bottom_right.height = fw->boundary_width;
+
+ if (HAS_NO_TOP_BORDER(fw))
+ {
+ switch (GET_TITLE_DIR(fw))
+ {
+ case DIR_N:
+ borders->top_left.height = 1;
+ break;
+ case DIR_S:
+ borders->bottom_right.height = 1;
+ break;
+ case DIR_W:
+ borders->top_left.width = 1;
+ break;
+ case DIR_E:
+ borders->bottom_right.width = 1;
+ break;
+ }
+ }
+
borders->total_size.width =
borders->top_left.width + borders->bottom_right.width;
borders->total_size.height =
Only in fvwm-patched/fvwm: geometry.c.orig
diff --unified --recursive --text fvwm-2.6.9/fvwm/screen.h fvwm-patched/fvwm/screen.h
--- fvwm-2.6.9/fvwm/screen.h 2020-08-21 15:30:39.091737766 -0600
+++ fvwm-patched/fvwm/screen.h 2020-08-21 16:10:56.466693390 -0600
@@ -284,6 +284,7 @@
char *tag; /* general style tag */
int title_height; /* explicitly specified title bar height */
int min_title_height;
+ int button_width;
/* titlebar buttons */
TitleButton buttons[NUMBER_OF_TITLE_BUTTONS];
TitleButton titlebar;
Only in fvwm-patched/fvwm: screen.h.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 16:09:27.176711008 -0600
+++ fvwm-patched/fvwm/style.c 2020-08-21 16:10:56.466693390 -0600
@@ -4714,6 +4714,12 @@
ps->change_mask.has_title_format_string = 1;
}
+ else if (StrEquals(token, "TopBorder"))
+ {
+ S_SET_HAS_NO_TOP_BORDER(SCF(*ps), !on);
+ S_SET_HAS_NO_TOP_BORDER(SCM(*ps), 1);
+ S_SET_HAS_NO_TOP_BORDER(SCC(*ps), 1);
+ }
else if (StrEquals(token, "TopTitleRotated"))
{
S_SET_IS_TOP_TITLE_ROTATED(SCF(*ps), on);
@@ -5315,6 +5321,11 @@
{
flags->do_redecorate = True;
}
+
+ if (S_HAS_NO_TOP_BORDER(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 16:09:27.176711008 -0600
+++ fvwm-patched/fvwm/style.h 2020-08-21 16:10:56.466693390 -0600
@@ -395,6 +395,11 @@
((c).s.has_slightly_rounded_corners)
#define S_SET_HAS_SLIGHTLY_ROUNDED_CORNERS(c,x) \
((c).s.has_slightly_rounded_corners = !!(x))
+#define S_HAS_NO_TOP_BORDER(c) \
+ ((c).s.has_no_top_border)
+#define S_SET_HAS_NO_TOP_BORDER(c,x) \
+ ((c).s.has_no_top_border = !!(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 16:09:27.176711008 -0600
+++ fvwm-patched/fvwm/window_flags.h 2020-08-21 16:10:56.466693390 -0600
@@ -358,6 +358,12 @@
(fw)->flags.common.s.has_slightly_rounded_corners = !!(x)
#define SETM_HAS_SLIGHTLY_ROUNDED_CORNERS(fw,x) \
(fw)->flag_mask.common.s.has_slightly_rounded_corners = !!(x)
+#define HAS_NO_TOP_BORDER(fw) \
+ ((fw)->flags.common.s.has_no_top_border)
+#define SET_HAS_NO_TOP_BORDER(fw,x) \
+ (fw)->flags.common.s.has_no_top_border = !!(x)
+#define SETM_HAS_NO_TOP_BORDER(fw,x) \
+ (fw)->flag_mask.common.s.has_no_top_border = !!(x)
/* access to the special flags of a window */
#define DO_REUSE_DESTROYED(fw) \