875 lines
27 KiB
Diff
875 lines
27 KiB
Diff
|
diff --unified --recursive --text fvwm-2.6.9/fvwm/add_window.c fvwm-patched/fvwm/add_window.c
|
||
|
--- fvwm-2.6.9/fvwm/add_window.c 2020-08-21 16:07:19.993929916 -0600
|
||
|
+++ fvwm-patched/fvwm/add_window.c 2020-08-21 16:08:05.602920846 -0600
|
||
|
@@ -1928,6 +1928,7 @@
|
||
|
{
|
||
|
int width;
|
||
|
int offset;
|
||
|
+ style_flags *sflags = &(pstyle->flags);
|
||
|
|
||
|
get_title_font_size_and_offset(
|
||
|
fw, S_TITLE_DIR(SCF(*pstyle)),
|
||
|
@@ -1939,6 +1940,10 @@
|
||
|
fw->title_thickness = width;
|
||
|
fw->title_text_offset = offset;
|
||
|
fw->corner_width = fw->title_thickness + fw->boundary_width;
|
||
|
+ if (SHAS_CORNER_WIDTH(sflags))
|
||
|
+ {
|
||
|
+ fw->corner_width = SGET_CORNER_WIDTH(*pstyle);
|
||
|
+ }
|
||
|
if (!HAS_TITLE(fw))
|
||
|
{
|
||
|
fw->title_thickness = 0;
|
||
|
@@ -2859,6 +2864,8 @@
|
||
|
fw = NULL;
|
||
|
}
|
||
|
|
||
|
+ frame_make_rounded_corners(fw);
|
||
|
+
|
||
|
return fw;
|
||
|
}
|
||
|
|
||
|
Only in fvwm-patched/fvwm: add_window.c.orig
|
||
|
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 16:07:19.993929916 -0600
|
||
|
+++ fvwm-patched/fvwm/borders.c 2020-08-21 16:08:05.602920846 -0600
|
||
|
@@ -1745,6 +1745,24 @@
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
+static void border_fill_fluxbox_handle(
|
||
|
+ Pixmap dest_pix, rectangle *dest_g, common_decorations_type *cd, Bool corner)
|
||
|
+{
|
||
|
+ corner = False;
|
||
|
+ /* Main Color */
|
||
|
+ XFillRectangle(
|
||
|
+ dpy, dest_pix, corner ? cd->shadow_gc : cd->relief_gc, dest_g->x + 1, dest_g->y + 1,
|
||
|
+ dest_g->width - dest_g->x - 3, dest_g->height - dest_g->y - 2);
|
||
|
+ /* Right Shadow */
|
||
|
+ XFillRectangle(
|
||
|
+ dpy, dest_pix, cd->shadow_gc, dest_g->x + dest_g->width - 2, dest_g->y + 1,
|
||
|
+ 1, dest_g->height - dest_g->y - 2);
|
||
|
+ /* Bottom Shadow */
|
||
|
+ XFillRectangle(
|
||
|
+ dpy, dest_pix, cd->shadow_gc, dest_g->x + 1, dest_g->height - 2,
|
||
|
+ dest_g->width - dest_g->x - 3, 1);
|
||
|
+}
|
||
|
+
|
||
|
/* create a root transparent colorset bg, we take in account a possible
|
||
|
* drawing rotation */
|
||
|
static Pixmap border_create_root_transparent_pixmap(
|
||
|
@@ -1989,12 +2007,28 @@
|
||
|
pix_g.width = part_g.width;
|
||
|
pix_g.height = part_g.height;
|
||
|
border_fill_pixmap_background(p, &pix_g, &bg, cd);
|
||
|
+ if (HAS_FLUXBOX_HANDLES(fw) && (part & PART_BOTTOM))
|
||
|
+ {
|
||
|
+ pix_g.y = part_g.height - fw->boundary_width;
|
||
|
+ if (part != PART_BORDER_S)
|
||
|
+ {
|
||
|
+ pix_g.width++;
|
||
|
+ }
|
||
|
+ if (part == PART_BORDER_SE)
|
||
|
+ {
|
||
|
+ pix_g.x--;
|
||
|
+ }
|
||
|
+ if (fw->boundary_width > 2)
|
||
|
+ {
|
||
|
+ border_fill_fluxbox_handle(p, &pix_g, cd, !(part & PART_BORDER_S));
|
||
|
+ }
|
||
|
+ }
|
||
|
if (free_bg_pixmap && bg.pixmap.p)
|
||
|
{
|
||
|
XFreePixmap(dpy, bg.pixmap.p);
|
||
|
}
|
||
|
/* draw the relief over the background */
|
||
|
- if (!br->relief.is_flat)
|
||
|
+ if (!br->relief.is_flat && !HAS_FLUXBOX_HANDLES(fw))
|
||
|
{
|
||
|
border_draw_part_relief(br, frame_g, &part_g, p, is_inverted);
|
||
|
/* draw the handle marks */
|
||
|
@@ -4514,6 +4548,9 @@
|
||
|
JustificationType just;
|
||
|
int lbl = 0;
|
||
|
int rbl = 0;
|
||
|
+ int bw;
|
||
|
+
|
||
|
+ bw = HAS_FLUXBOX_HANDLES(fw) ? 1 : fw->boundary_width;
|
||
|
|
||
|
ret_td->cd = cd;
|
||
|
ret_td->frame_g = *new_g;
|
||
|
@@ -4551,16 +4588,16 @@
|
||
|
/* geometry of the title bar title + buttons */
|
||
|
if (!ret_td->has_vt)
|
||
|
{
|
||
|
- ret_td->bar_g.width = new_g->width - 2 * fw->boundary_width;
|
||
|
+ ret_td->bar_g.width = new_g->width - 2 * bw;
|
||
|
ret_td->bar_g.height = ret_td->layout.title_g.height;
|
||
|
- ret_td->bar_g.x = fw->boundary_width;
|
||
|
+ ret_td->bar_g.x = bw;
|
||
|
ret_td->bar_g.y = ret_td->layout.title_g.y;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
ret_td->bar_g.width = ret_td->layout.title_g.width;
|
||
|
- ret_td->bar_g.height = new_g->height - 2 * fw->boundary_width;
|
||
|
- ret_td->bar_g.y = fw->boundary_width;
|
||
|
+ ret_td->bar_g.height = new_g->height - 2 * bw;
|
||
|
+ ret_td->bar_g.y = bw;
|
||
|
ret_td->bar_g.x = ret_td->layout.title_g.x;
|
||
|
}
|
||
|
|
||
|
@@ -4612,7 +4649,7 @@
|
||
|
{
|
||
|
ret_td->left_buttons_g.height = rbl;
|
||
|
ret_td->right_buttons_g.height = lbl;
|
||
|
- ret_td->right_buttons_g.y = fw->boundary_width;
|
||
|
+ ret_td->right_buttons_g.y = bw;
|
||
|
ret_td->right_buttons_g.x = ret_td->bar_g.x;
|
||
|
ret_td->left_buttons_g.y = ret_td->layout.title_g.y +
|
||
|
ret_td->layout.title_g.height;
|
||
|
@@ -4622,7 +4659,7 @@
|
||
|
{
|
||
|
ret_td->left_buttons_g.width = rbl;
|
||
|
ret_td->right_buttons_g.width = lbl;
|
||
|
- ret_td->right_buttons_g.x = fw->boundary_width;
|
||
|
+ ret_td->right_buttons_g.x = bw;
|
||
|
ret_td->right_buttons_g.y = ret_td->bar_g.y;
|
||
|
ret_td->left_buttons_g.x = ret_td->layout.title_g.x +
|
||
|
ret_td->layout.title_g.width;
|
||
|
@@ -4635,7 +4672,7 @@
|
||
|
{
|
||
|
ret_td->left_buttons_g.height = lbl;
|
||
|
ret_td->right_buttons_g.height = rbl;
|
||
|
- ret_td->left_buttons_g.y = fw->boundary_width;
|
||
|
+ ret_td->left_buttons_g.y = bw;
|
||
|
ret_td->left_buttons_g.x = ret_td->bar_g.x;
|
||
|
ret_td->right_buttons_g.y = ret_td->layout.title_g.y +
|
||
|
ret_td->layout.title_g.height;
|
||
|
@@ -4645,7 +4682,7 @@
|
||
|
{
|
||
|
ret_td->left_buttons_g.width = lbl;
|
||
|
ret_td->right_buttons_g.width = rbl;
|
||
|
- ret_td->left_buttons_g.x = fw->boundary_width;
|
||
|
+ ret_td->left_buttons_g.x = bw;
|
||
|
ret_td->left_buttons_g.y = ret_td->bar_g.y;
|
||
|
ret_td->right_buttons_g.x = ret_td->layout.title_g.x +
|
||
|
ret_td->layout.title_g.width;
|
||
|
@@ -4988,7 +5025,7 @@
|
||
|
int bw;
|
||
|
Bool title;
|
||
|
|
||
|
- bw = fw->boundary_width;
|
||
|
+ bw = HAS_FLUXBOX_HANDLES(fw) ? 1 : fw->boundary_width;
|
||
|
/* ret_g->x and ret->y is just an offset relatively to the w,
|
||
|
* maybe we can take the relief in account? */
|
||
|
switch (part)
|
||
|
@@ -5006,6 +5043,10 @@
|
||
|
case PART_BORDER_S:
|
||
|
ret_g->x = sidebar_g->x;
|
||
|
ret_g->y = 2 * sidebar_g->y + sidebar_g->height - bw;
|
||
|
+ if (HAS_FLUXBOX_HANDLES(fw))
|
||
|
+ {
|
||
|
+ ret_g->y = 2 * sidebar_g->y + sidebar_g->height - fw->boundary_width;
|
||
|
+ }
|
||
|
*ret_w = FW_W_SIDE(fw, 2);
|
||
|
break;
|
||
|
case PART_BORDER_W:
|
||
|
@@ -5040,9 +5081,14 @@
|
||
|
switch (part)
|
||
|
{
|
||
|
case PART_BORDER_N:
|
||
|
+ ret_g->height = bw;
|
||
|
case PART_BORDER_S:
|
||
|
ret_g->width = sidebar_g->width;
|
||
|
ret_g->height = bw;
|
||
|
+ if (HAS_FLUXBOX_HANDLES(fw))
|
||
|
+ {
|
||
|
+ ret_g->height = fw->boundary_width;
|
||
|
+ }
|
||
|
break;
|
||
|
case PART_BORDER_E:
|
||
|
case PART_BORDER_W:
|
||
|
Only in fvwm-patched/fvwm: borders.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 2018-05-26 05:35:26.000000000 -0600
|
||
|
+++ fvwm-patched/fvwm/frame.c 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -438,6 +438,8 @@
|
||
|
BroadcastConfig(M_CONFIGURE_WINDOW,fw);
|
||
|
}
|
||
|
|
||
|
+ frame_make_rounded_corners(fw);
|
||
|
+
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
@@ -1957,6 +1959,7 @@
|
||
|
FShapeSet);
|
||
|
}
|
||
|
frame_setup_shape(fw, mra->end_g.width, mra->end_g.height, fw->wShaped);
|
||
|
+ frame_make_rounded_corners(fw);
|
||
|
if (mra->flags.do_restore_gravity)
|
||
|
{
|
||
|
/* TA: 2011-09-04: There might be a chance some clients with
|
||
|
@@ -2090,6 +2093,210 @@
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
+void draw_rounded_mask(Window win, int width, int height, Bool slightlyrounded, window_parts draw_parts, int col)
|
||
|
+{
|
||
|
+ Pixmap pm;
|
||
|
+ GC gc;
|
||
|
+ rectangle rect;
|
||
|
+ int w,h;
|
||
|
+ unsigned long valuemask;
|
||
|
+ int x;
|
||
|
+ int lstart, lend;
|
||
|
+ int l0[] = { 0, 1, 0, 1, 2, 3 };
|
||
|
+ int l1[] = { 1, 2, 1, 2, 3, 5 };
|
||
|
+ int l2[] = { 2, 1, 5, 3, 2, 1 };
|
||
|
+ int l3[] = { 1, 1, 1, 1, 1, 2 };
|
||
|
+
|
||
|
+ if (slightlyrounded)
|
||
|
+ {
|
||
|
+ lstart = 0;
|
||
|
+ lend = 2;
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ lstart = 2;
|
||
|
+ lend = 6;
|
||
|
+ }
|
||
|
+
|
||
|
+ XGetGeometry(
|
||
|
+ dpy, win, &JunkRoot, &rect.x, &rect.y,
|
||
|
+ &rect.width, &rect.height, &JunkBW, &JunkDepth);
|
||
|
+
|
||
|
+ w = rect.width;
|
||
|
+ h = rect.height;
|
||
|
+ pm = XCreatePixmap(dpy, win, width, height, 1);
|
||
|
+ gc = Scr.MonoGC;
|
||
|
+ XSetForeground(dpy, gc, !col);
|
||
|
+ XFillRectangle(dpy, pm, gc, 0, 0, w, h);
|
||
|
+ XSetForeground(dpy, gc, col);
|
||
|
+
|
||
|
+ /* Draw a rounded shape on the corners of the pixmap */
|
||
|
+ for (x = lstart; x < lend; x++)
|
||
|
+ {
|
||
|
+ if (draw_parts & PART_BORDER_NW)
|
||
|
+ {
|
||
|
+ XFillRectangle(dpy, pm, gc, 0, l0[x], l2[x], l3[x]);
|
||
|
+ }
|
||
|
+ if (draw_parts & PART_BORDER_NE)
|
||
|
+ {
|
||
|
+ XFillRectangle(dpy, pm, gc, w-l2[x], l0[x], l2[x], l3[x]);
|
||
|
+ }
|
||
|
+ if (draw_parts & PART_BORDER_SW)
|
||
|
+ {
|
||
|
+ XFillRectangle(dpy, pm, gc, 0, h-l1[x], l2[x], l3[x]);
|
||
|
+ }
|
||
|
+ if (draw_parts & PART_BORDER_SE)
|
||
|
+ {
|
||
|
+ XFillRectangle(dpy, pm, gc, w-l2[x], h-l1[x], l2[x], l3[x]);
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ FShapeCombineMask(dpy, win, ShapeBounding, 0, 0, pm, col==1 ? ShapeSubtract : ShapeSet);
|
||
|
+
|
||
|
+ XFreePixmap(dpy, pm);
|
||
|
+}
|
||
|
+
|
||
|
+static void frame_draw_rounded_mask(FvwmWindow *fw, Window win, window_parts draw_parts, int col)
|
||
|
+{
|
||
|
+ draw_rounded_mask(win, fw->g.frame.width, fw->g.frame.height,
|
||
|
+ HAS_SLIGHTLY_ROUNDED_CORNERS(fw), IS_MAXIMIZED(fw)?0:draw_parts, col);
|
||
|
+}
|
||
|
+
|
||
|
+/* Returns a corner corrected for rotation of the titlebar (ie button 1 is always NW) */
|
||
|
+#define SWAP_CORNER(PART) corner = corner & (PART) ? corner ^ (PART) : corner
|
||
|
+static window_parts __get_corner(window_parts corner, FvwmWindow *fw)
|
||
|
+{
|
||
|
+ int dir;
|
||
|
+
|
||
|
+ dir = GET_TITLE_DIR(fw);
|
||
|
+
|
||
|
+ /* Flip horizontally (relative to tb) if the titlebar is rotated */
|
||
|
+ if ((dir == DIR_N && IS_TOP_TITLE_ROTATED(fw))
|
||
|
+ || (dir == DIR_S && !IS_BOTTOM_TITLE_ROTATED(fw))
|
||
|
+ || (dir == DIR_W && IS_LEFT_TITLE_ROTATED_CW(fw))
|
||
|
+ || (dir == DIR_E && !IS_RIGHT_TITLE_ROTATED_CW(fw)))
|
||
|
+ {
|
||
|
+ SWAP_CORNER(PART_BORDER_NE | PART_BORDER_NW);
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Swap SE/SW so that shift left goes in a clockwise order */
|
||
|
+ SWAP_CORNER(PART_BORDER_SW | PART_BORDER_SE);
|
||
|
+
|
||
|
+ /* Rotate clockwise depending on dir */
|
||
|
+ corner <<= dir;
|
||
|
+ if (corner > PART_BORDER_SE)
|
||
|
+ {
|
||
|
+ corner = corner >> 4;
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Swap SE/SW back */
|
||
|
+ SWAP_CORNER(PART_BORDER_SW | PART_BORDER_SE);
|
||
|
+
|
||
|
+ return corner;
|
||
|
+}
|
||
|
+
|
||
|
+void frame_make_rounded_corners(FvwmWindow *fw)
|
||
|
+{
|
||
|
+ rectangle rect;
|
||
|
+ window_parts draw_parts;
|
||
|
+ window_parts mask;
|
||
|
+ int x;
|
||
|
+ FvwmWindow *left_button = 0;
|
||
|
+ FvwmWindow *right_button = 0;
|
||
|
+
|
||
|
+ if (!fw || !FShapesSupported)
|
||
|
+ {
|
||
|
+ return;
|
||
|
+ }
|
||
|
+
|
||
|
+ window_parts corner_nw = __get_corner(PART_BORDER_NW, fw);
|
||
|
+ window_parts corner_ne = __get_corner(PART_BORDER_NE, fw);
|
||
|
+ window_parts corner_se = __get_corner(PART_BORDER_SE, fw);
|
||
|
+ window_parts corner_sw = __get_corner(PART_BORDER_SW, fw);
|
||
|
+
|
||
|
+ for (x = 9;x>=0;x--)
|
||
|
+ {
|
||
|
+ if (FW_W_BUTTON(fw, x) != None)
|
||
|
+ {
|
||
|
+ if (x%2 == 0)
|
||
|
+ {
|
||
|
+ left_button = FW_W_BUTTON(fw, x);
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ right_button = FW_W_BUTTON(fw, x);
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+
|
||
|
+ mask = 0;
|
||
|
+ if (HAS_ROUNDED_CORNERS_TOP(fw))
|
||
|
+ {
|
||
|
+ mask |= corner_ne | corner_nw;
|
||
|
+ }
|
||
|
+ if (HAS_ROUNDED_CORNERS_BOTTOM(fw))
|
||
|
+ {
|
||
|
+ mask |= corner_se | corner_sw;
|
||
|
+ }
|
||
|
+
|
||
|
+ /* Draw mask on each corner of the window. This involves the frame, title,
|
||
|
+ * buttons and parent wins depending on the window configuration */
|
||
|
+ rect = fw->g.frame;
|
||
|
+ frame_draw_rounded_mask(fw, FW_W_FRAME(fw), mask, 1);
|
||
|
+ if (HAS_TITLE(fw))
|
||
|
+ {
|
||
|
+ draw_parts = 0;
|
||
|
+ if (!left_button)
|
||
|
+ {
|
||
|
+ draw_parts |= corner_nw;
|
||
|
+ }
|
||
|
+ if (!right_button)
|
||
|
+ {
|
||
|
+ draw_parts |= corner_ne;
|
||
|
+ }
|
||
|
+ if (IS_SHADED(fw))
|
||
|
+ {
|
||
|
+ if (!left_button)
|
||
|
+ {
|
||
|
+ draw_parts |= corner_sw;
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ frame_draw_rounded_mask(fw, left_button, mask & (corner_nw|corner_sw), 0);
|
||
|
+ }
|
||
|
+ if (!right_button)
|
||
|
+ {
|
||
|
+ draw_parts |= corner_se;
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ frame_draw_rounded_mask(fw, right_button, mask & (corner_ne|corner_se), 0);
|
||
|
+ }
|
||
|
+ }
|
||
|
+ frame_draw_rounded_mask(fw, FW_W_TITLE(fw), mask & draw_parts, 0);
|
||
|
+
|
||
|
+ if (!IS_SHADED(fw))
|
||
|
+ {
|
||
|
+ frame_draw_rounded_mask(fw, FW_W_PARENT(fw), mask & (corner_sw|corner_se), 0);
|
||
|
+
|
||
|
+ if (left_button)
|
||
|
+ {
|
||
|
+ frame_draw_rounded_mask(fw, left_button, mask & corner_nw, 0);
|
||
|
+ }
|
||
|
+ if (right_button)
|
||
|
+ {
|
||
|
+ frame_draw_rounded_mask(fw, right_button, mask & corner_ne, 0);
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ frame_draw_rounded_mask(fw, FW_W_PARENT(fw), mask & PART_CORNERS, 0);
|
||
|
+ }
|
||
|
+
|
||
|
+ XFlush(dpy);
|
||
|
+}
|
||
|
+
|
||
|
/****************************************************************************
|
||
|
*
|
||
|
* Sets up the shaped window borders
|
||
|
Only in fvwm-patched/fvwm: frame.c.orig
|
||
|
diff --unified --recursive --text fvwm-2.6.9/fvwm/frame.h fvwm-patched/fvwm/frame.h
|
||
|
--- fvwm-2.6.9/fvwm/frame.h 2016-10-15 08:51:45.000000000 -0600
|
||
|
+++ fvwm-patched/fvwm/frame.h 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -5,6 +5,8 @@
|
||
|
|
||
|
/* ---------------------------- included header files ---------------------- */
|
||
|
|
||
|
+#include "borders.h"
|
||
|
+
|
||
|
/* ---------------------------- global definitions ------------------------- */
|
||
|
|
||
|
/* ---------------------------- global macros ------------------------------ */
|
||
|
@@ -71,5 +73,7 @@
|
||
|
Bool do_send_configure_notify);
|
||
|
void frame_setup_shape(
|
||
|
FvwmWindow *fw, int w, int h, int shape_mode);
|
||
|
+void frame_make_rounded_corners(FvwmWindow *fw);
|
||
|
+void draw_rounded_mask(Window win, int width, int height, Bool slightlyrounded, window_parts draw_parts, int col);
|
||
|
|
||
|
#endif /* FRAME_H */
|
||
|
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:07:19.993929916 -0600
|
||
|
+++ fvwm-patched/fvwm/fvwm.h 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -270,6 +270,10 @@
|
||
|
unsigned windowshade_laziness : 2;
|
||
|
unsigned use_title_decor_rotation : 1;
|
||
|
unsigned has_border_under_title : 1;
|
||
|
+ unsigned has_fluxbox_handles : 1;
|
||
|
+ unsigned has_rounded_corners_top : 1;
|
||
|
+ unsigned has_rounded_corners_bottom : 1;
|
||
|
+ unsigned has_slightly_rounded_corners : 1;
|
||
|
focus_policy_t focus_policy;
|
||
|
} s;
|
||
|
} common_flags_t;
|
||
|
@@ -553,6 +557,7 @@
|
||
|
unsigned has_edge_resistance_move : 1;
|
||
|
unsigned has_edge_resistance_xinerama_move : 1;
|
||
|
unsigned has_handle_width : 1;
|
||
|
+ unsigned has_corner_width : 1;
|
||
|
unsigned has_icon : 1;
|
||
|
unsigned has_icon_boxes : 1;
|
||
|
unsigned has_icon_size_limits : 1;
|
||
|
@@ -713,6 +718,7 @@
|
||
|
short border_width;
|
||
|
/* resize handle width */
|
||
|
short handle_width;
|
||
|
+ short corner_width;
|
||
|
int layer;
|
||
|
int start_desk;
|
||
|
int start_page_x;
|
||
|
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:04:22.090148699 -0600
|
||
|
+++ fvwm-patched/fvwm/geometry.c 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -489,16 +489,18 @@
|
||
|
const FvwmWindow *fw, size_borders *borders, Bool is_shaded)
|
||
|
{
|
||
|
int title_thickness;
|
||
|
+ int bw;
|
||
|
|
||
|
- borders->top_left.width = fw->boundary_width;
|
||
|
- borders->bottom_right.width = fw->boundary_width;
|
||
|
- borders->top_left.height = fw->boundary_width;
|
||
|
+ bw = HAS_FLUXBOX_HANDLES(fw) ? 1 : fw->boundary_width;
|
||
|
+ borders->top_left.width = bw;
|
||
|
+ borders->bottom_right.width = bw;
|
||
|
+ borders->top_left.height = bw;
|
||
|
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;
|
||
|
+ title_thickness += bw;
|
||
|
}
|
||
|
|
||
|
switch (GET_TITLE_DIR(fw))
|
||
|
@@ -528,9 +530,13 @@
|
||
|
void get_window_borders_no_title(
|
||
|
const FvwmWindow *fw, size_borders *borders)
|
||
|
{
|
||
|
- borders->top_left.width = fw->boundary_width;
|
||
|
- borders->bottom_right.width = fw->boundary_width;
|
||
|
- borders->top_left.height = fw->boundary_width;
|
||
|
+ int bw;
|
||
|
+
|
||
|
+ bw = HAS_FLUXBOX_HANDLES(fw) ? 1 : fw->boundary_width;
|
||
|
+
|
||
|
+ borders->top_left.width = bw;
|
||
|
+ borders->bottom_right.width = bw;
|
||
|
+ borders->top_left.height = bw;
|
||
|
borders->bottom_right.height = fw->boundary_width;
|
||
|
borders->total_size.width =
|
||
|
borders->top_left.width + borders->bottom_right.width;
|
||
|
Only in fvwm-patched/fvwm: geometry.c.orig
|
||
|
diff --unified --recursive --text fvwm-2.6.9/fvwm/menus.c fvwm-patched/fvwm/menus.c
|
||
|
--- fvwm-2.6.9/fvwm/menus.c 2020-08-21 15:53:07.026125528 -0600
|
||
|
+++ fvwm-patched/fvwm/menus.c 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -60,6 +60,7 @@
|
||
|
#include "menugeometry.h"
|
||
|
#include "menuparameters.h"
|
||
|
#include "menus.h"
|
||
|
+#include "frame.h"
|
||
|
#include "libs/FGettext.h"
|
||
|
|
||
|
/* ---------------------------- local definitions -------------------------- */
|
||
|
@@ -3190,6 +3191,13 @@
|
||
|
return x_overlap;
|
||
|
}
|
||
|
|
||
|
+static void menu_make_rounded_corners(MenuRoot *mr)
|
||
|
+{
|
||
|
+ draw_rounded_mask(MR_WINDOW(mr), MR_WIDTH(mr), MR_HEIGHT(mr),
|
||
|
+ MST_HAS_SLIGHTLY_ROUNDED_CORNERS(mr),
|
||
|
+ MST_HAS_ROUNDED_CORNERS(mr)?PART_CORNERS:0, 0);
|
||
|
+}
|
||
|
+
|
||
|
/*
|
||
|
*
|
||
|
* Procedure:
|
||
|
@@ -3763,6 +3771,8 @@
|
||
|
* Pop up the menu
|
||
|
*/
|
||
|
|
||
|
+ menu_make_rounded_corners(mr);
|
||
|
+
|
||
|
XMoveWindow(dpy, MR_WINDOW(mr), x, y);
|
||
|
MR_X(mr) = x;
|
||
|
MR_Y(mr) = y;
|
||
|
Only in fvwm-patched/fvwm: menus.c.orig
|
||
|
diff --unified --recursive --text fvwm-2.6.9/fvwm/menustyle.c fvwm-patched/fvwm/menustyle.c
|
||
|
--- fvwm-2.6.9/fvwm/menustyle.c 2020-08-21 15:53:07.026125528 -0600
|
||
|
+++ fvwm-patched/fvwm/menustyle.c 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -431,6 +431,7 @@
|
||
|
"TitleColorset", "HilightTitleBack",
|
||
|
"TitleFont",
|
||
|
"VerticalMargins", "FlatSeparators",
|
||
|
+ "RoundedCorners", "SlightlyRoundedCorners",
|
||
|
"UniqueHotkeyActivatesImmediate",
|
||
|
NULL
|
||
|
};
|
||
|
@@ -1603,12 +1604,18 @@
|
||
|
&ST_VERTICAL_MARGIN_BOTTOM(tmpms),
|
||
|
0, 0);
|
||
|
break;
|
||
|
- case 63: /* UniqueHotKeyActivatesImmediate */
|
||
|
- ST_HOTKEY_ACTIVATES_IMMEDIATE(tmpms) = on;
|
||
|
- break;
|
||
|
case 63: /* FlatSeparators */
|
||
|
ST_DO_FLAT_SEPARATOR(tmpms) = on;
|
||
|
break;
|
||
|
+ case 64: /* UniqueHotKeyActivatesImmediate */
|
||
|
+ ST_HOTKEY_ACTIVATES_IMMEDIATE(tmpms) = on;
|
||
|
+ break;
|
||
|
+ case 65: /* RoundedCorners */
|
||
|
+ ST_HAS_ROUNDED_CORNERS(tmpms) = on;
|
||
|
+ break;
|
||
|
+ case 66: /* SlightlyRoundedCorners */
|
||
|
+ ST_HAS_SLIGHTLY_ROUNDED_CORNERS(tmpms) = on;
|
||
|
+ break;
|
||
|
|
||
|
#if 0
|
||
|
case 99: /* PositionHints */
|
||
|
Only in fvwm-patched/fvwm: menustyle.c.orig
|
||
|
diff --unified --recursive --text fvwm-2.6.9/fvwm/menustyle.h fvwm-patched/fvwm/menustyle.h
|
||
|
--- fvwm-2.6.9/fvwm/menustyle.h 2020-08-21 15:53:07.026125528 -0600
|
||
|
+++ fvwm-patched/fvwm/menustyle.h 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -25,6 +25,10 @@
|
||
|
#define MST_DO_HILIGHT_BACK(m) ((m)->s->ms->look.flags.do_hilight_back)
|
||
|
#define ST_DO_FLAT_SEPARATOR(s) ((s)->look.flags.do_flat_separator)
|
||
|
#define MST_DO_FLAT_SEPARATOR(m) ((m)->s->ms->look.flags.do_flat_separator)
|
||
|
+#define ST_HAS_ROUNDED_CORNERS(s) ((s)->look.flags.has_rounded_corners)
|
||
|
+#define MST_HAS_ROUNDED_CORNERS(m) ((m)->s->ms->look.flags.has_rounded_corners)
|
||
|
+#define ST_HAS_SLIGHTLY_ROUNDED_CORNERS(s) ((s)->look.flags.has_slightly_rounded_corners)
|
||
|
+#define MST_HAS_SLIGHTLY_ROUNDED_CORNERS(m) ((m)->s->ms->look.flags.has_slightly_rounded_corners)
|
||
|
#define ST_DO_HILIGHT_FORE(s) ((s)->look.flags.do_hilight_fore)
|
||
|
#define MST_DO_HILIGHT_FORE(m) ((m)->s->ms->look.flags.do_hilight_fore)
|
||
|
#define ST_DO_HILIGHT_TITLE_BACK(s) ((s)->look.flags.do_hilight_title_back)
|
||
|
@@ -285,6 +289,8 @@
|
||
|
unsigned do_hilight_title_back : 1;
|
||
|
unsigned using_default_titlefont : 1;
|
||
|
unsigned do_flat_separator : 1;
|
||
|
+ unsigned has_rounded_corners : 1;
|
||
|
+ unsigned has_slightly_rounded_corners : 1;
|
||
|
} flags;
|
||
|
unsigned char ReliefThickness;
|
||
|
unsigned char TitleUnderlines;
|
||
|
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:07:19.993929916 -0600
|
||
|
+++ fvwm-patched/fvwm/style.c 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -553,6 +553,10 @@
|
||
|
SSET_HANDLE_WIDTH(
|
||
|
*merged_style, SGET_HANDLE_WIDTH(*add_style));
|
||
|
}
|
||
|
+ if (add_style->flags.has_corner_width)
|
||
|
+ {
|
||
|
+ SSET_CORNER_WIDTH(*merged_style, SGET_CORNER_WIDTH(*add_style));
|
||
|
+ }
|
||
|
if (add_style->flags.has_icon_size_limits)
|
||
|
{
|
||
|
SSET_MIN_ICON_WIDTH(
|
||
|
@@ -2590,6 +2594,20 @@
|
||
|
ps->change_mask.has_color_back = 1;
|
||
|
break;
|
||
|
}
|
||
|
+ else if (StrEquals(token, "CornerWidth"))
|
||
|
+ {
|
||
|
+ if (GetIntegerArguments(rest, &rest, val, 1))
|
||
|
+ {
|
||
|
+ SSET_CORNER_WIDTH(*ps, (short)*val);
|
||
|
+ ps->flags.has_corner_width = 1;
|
||
|
+ }
|
||
|
+ else
|
||
|
+ {
|
||
|
+ ps->flags.has_corner_width = 0;
|
||
|
+ }
|
||
|
+ ps->flag_mask.has_corner_width = 1;
|
||
|
+ ps->change_mask.has_corner_width = 1;
|
||
|
+ }
|
||
|
else if (StrEquals(token, "CirculateSkipIcon"))
|
||
|
{
|
||
|
S_SET_DO_CIRCULATE_SKIP_ICON(SCF(*ps), on);
|
||
|
@@ -2902,6 +2920,15 @@
|
||
|
S_SET_HAS_MWM_BORDER(SCM(*ps), 1);
|
||
|
S_SET_HAS_MWM_BORDER(SCC(*ps), 1);
|
||
|
}
|
||
|
+ else if (StrEquals(token, "FluxboxHandles"))
|
||
|
+ {
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCF(*ps), on);
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCC(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCF(*ps), !on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCC(*ps), 1);
|
||
|
+ }
|
||
|
else if (StrEquals(token, "FocusFollowsMouse"))
|
||
|
{
|
||
|
style_set_old_focus_policy(ps, 1);
|
||
|
@@ -4097,6 +4124,50 @@
|
||
|
S_SET_IS_RIGHT_TITLE_ROTATED_CW(SCM(*ps), 1);
|
||
|
S_SET_IS_RIGHT_TITLE_ROTATED_CW(SCC(*ps), 1);
|
||
|
}
|
||
|
+ else if (StrEquals(token, "RoundedCorners"))
|
||
|
+ {
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_TOP(SCF(*ps), on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_TOP(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_TOP(SCC(*ps), 1);
|
||
|
+
|
||
|
+ /* FluxboxHandles found */
|
||
|
+ if (S_HAS_FLUXBOX_HANDLES(SCC(*ps))) {
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCF(*ps), !on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCC(*ps), 1);
|
||
|
+ }
|
||
|
+ else {
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCF(*ps), !on);
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCC(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCF(*ps), on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCC(*ps), 1);
|
||
|
+ }
|
||
|
+ }
|
||
|
+ else if (StrEquals(token, "RoundedCornersTop"))
|
||
|
+ {
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_TOP(SCF(*ps), on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_TOP(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_TOP(SCC(*ps), 1);
|
||
|
+ }
|
||
|
+ else if (StrEquals(token, "RoundedCornersBottom"))
|
||
|
+ {
|
||
|
+ /* FluxboxHandles found */
|
||
|
+ if (S_HAS_FLUXBOX_HANDLES(SCC(*ps))) {
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCF(*ps), !on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCC(*ps), 1);
|
||
|
+ }
|
||
|
+ else {
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCF(*ps), !on);
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_FLUXBOX_HANDLES(SCC(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCF(*ps), on);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_ROUNDED_CORNERS_BOTTOM(SCC(*ps), 1);
|
||
|
+ }
|
||
|
+ }
|
||
|
else
|
||
|
{
|
||
|
found = False;
|
||
|
@@ -4231,6 +4302,12 @@
|
||
|
S_SET_HAS_NO_STICKY_STIPPLED_ICON_TITLE(SCM(*ps), 1);
|
||
|
S_SET_HAS_NO_STICKY_STIPPLED_ICON_TITLE(SCC(*ps), 1);
|
||
|
}
|
||
|
+ else if (StrEquals(token, "SlightlyRoundedCorners"))
|
||
|
+ {
|
||
|
+ S_SET_HAS_SLIGHTLY_ROUNDED_CORNERS(SCF(*ps), on);
|
||
|
+ S_SET_HAS_SLIGHTLY_ROUNDED_CORNERS(SCM(*ps), 1);
|
||
|
+ S_SET_HAS_SLIGHTLY_ROUNDED_CORNERS(SCC(*ps), 1);
|
||
|
+ }
|
||
|
else if (StrEquals(token, "Slippery"))
|
||
|
{
|
||
|
S_SET_IS_STICKY_ACROSS_PAGES(SCF(*ps), !on);
|
||
|
@@ -5219,6 +5296,20 @@
|
||
|
{
|
||
|
flags->do_update_rotated_title = 1;
|
||
|
}
|
||
|
+
|
||
|
+ /* has_fluxbox_handles */
|
||
|
+ if (S_HAS_FLUXBOX_HANDLES(SCC(*ret_style)))
|
||
|
+ {
|
||
|
+ flags->do_redecorate = True;
|
||
|
+ }
|
||
|
+
|
||
|
+ /* has_rounded_corners */
|
||
|
+ if (S_HAS_ROUNDED_CORNERS_TOP(SCC(*ret_style))
|
||
|
+ || S_HAS_ROUNDED_CORNERS_BOTTOM(SCC(*ret_style))
|
||
|
+ || S_HAS_SLIGHTLY_ROUNDED_CORNERS(SCC(*ret_style)))
|
||
|
+ {
|
||
|
+ flags->do_redecorate = True;
|
||
|
+ }
|
||
|
|
||
|
if (S_HAS_BORDER_UNDER_TITLE(SCC(*ret_style)))
|
||
|
{
|
||
|
@@ -5483,6 +5574,12 @@
|
||
|
flags->do_update_modules_flags = 1;
|
||
|
}
|
||
|
|
||
|
+ /* has_corner_width */
|
||
|
+ if (ret_style->change_mask.has_corner_width)
|
||
|
+ {
|
||
|
+ flags->do_redecorate = True;
|
||
|
+ }
|
||
|
+
|
||
|
if (ret_style->change_mask.do_save_under ||
|
||
|
ret_style->change_mask.use_backing_store ||
|
||
|
ret_style->change_mask.use_parent_relative)
|
||
|
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:07:19.993929916 -0600
|
||
|
+++ fvwm-patched/fvwm/style.h 2020-08-21 16:08:05.606920933 -0600
|
||
|
@@ -21,6 +21,8 @@
|
||
|
((sf)->has_color_fore)
|
||
|
#define SHAS_HANDLE_WIDTH(sf) \
|
||
|
((sf)->has_handle_width)
|
||
|
+#define SHAS_CORNER_WIDTH(sf) \
|
||
|
+ ((sf)->has_corner_width)
|
||
|
#define SHAS_ICON(sf) \
|
||
|
((sf)->has_icon)
|
||
|
#define SHAS_ICON_BOXES(sf) \
|
||
|
@@ -377,6 +379,22 @@
|
||
|
((c).s.has_border_under_title)
|
||
|
#define S_SET_HAS_BORDER_UNDER_TITLE(c,x) \
|
||
|
((c).s.has_border_under_title = !!(x))
|
||
|
+#define S_HAS_FLUXBOX_HANDLES(c) \
|
||
|
+ ((c).s.has_fluxbox_handles)
|
||
|
+#define S_SET_HAS_FLUXBOX_HANDLES(c,x) \
|
||
|
+ ((c).s.has_fluxbox_handles = !!(x))
|
||
|
+#define S_HAS_ROUNDED_CORNERS_TOP(c) \
|
||
|
+ ((c).s.has_rounded_corners_top)
|
||
|
+#define S_SET_HAS_ROUNDED_CORNERS_TOP(c,x) \
|
||
|
+ ((c).s.has_rounded_corners_top = !!(x))
|
||
|
+#define S_HAS_ROUNDED_CORNERS_BOTTOM(c) \
|
||
|
+ ((c).s.has_rounded_corners_bottom)
|
||
|
+#define S_SET_HAS_ROUNDED_CORNERS_BOTTOM(c,x) \
|
||
|
+ ((c).s.has_rounded_corners_bottom = !!(x))
|
||
|
+#define S_HAS_SLIGHTLY_ROUNDED_CORNERS(c) \
|
||
|
+ ((c).s.has_slightly_rounded_corners)
|
||
|
+#define S_SET_HAS_SLIGHTLY_ROUNDED_CORNERS(c,x) \
|
||
|
+ ((c).s.has_slightly_rounded_corners = !!(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) \
|
||
|
@@ -597,6 +615,10 @@
|
||
|
((s).handle_width)
|
||
|
#define SSET_HANDLE_WIDTH(s,x) \
|
||
|
((s).handle_width = (x))
|
||
|
+#define SGET_CORNER_WIDTH(s) \
|
||
|
+ ((s).corner_width)
|
||
|
+#define SSET_CORNER_WIDTH(s,x) \
|
||
|
+ ((s).corner_width = (x))
|
||
|
#define SGET_LAYER(s) \
|
||
|
((s).layer)
|
||
|
#define SSET_LAYER(s,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:07:19.993929916 -0600
|
||
|
+++ fvwm-patched/fvwm/window_flags.h 2020-08-21 16:08:05.610921020 -0600
|
||
|
@@ -316,12 +316,12 @@
|
||
|
(fw)->flags.common.s.is_bottom_title_rotated = !!(x)
|
||
|
#define SETM_IS_BOTTOM_TITLE_ROTATED(fw,x) \
|
||
|
(fw)->flag_mask.common.s.is_bottom_title_rotated = !!(x)
|
||
|
-#define IS_BOTTOM_TITLE_ROTATED(fw) \
|
||
|
- ((fw)->flags.common.s.is_bottom_title_rotated)
|
||
|
-#define SET_IS_BOTTOM_TITLE_ROTATED(fw,x) \
|
||
|
- (fw)->flags.common.s.is_bottom_title_rotated = !!(x)
|
||
|
-#define SETM_IS_BOTTOM_TITLE_ROTATED(fw,x) \
|
||
|
- (fw)->flag_mask.common.s.is_bottom_title_rotated = !!(x)
|
||
|
+#define IS_TOP_TITLE_ROTATED(fw) \
|
||
|
+ ((fw)->flags.common.s.is_top_title_rotated)
|
||
|
+#define SET_IS_TOP_TITLE_ROTATED(fw,x) \
|
||
|
+ (fw)->flags.common.s.is_top_title_rotated = !!(x)
|
||
|
+#define SETM_IS_TOP_TITLE_ROTATED(fw,x) \
|
||
|
+ (fw)->flag_mask.common.s.is_top_title_rotated = !!(x)
|
||
|
#define USE_TITLE_DECOR_ROTATION(fw) \
|
||
|
((fw)->flags.common.s.use_title_decor_rotation)
|
||
|
#define SET_USE_TITLE_DECOR_ROTATION(fw,x) \
|
||
|
@@ -334,6 +334,30 @@
|
||
|
(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)
|
||
|
+#define HAS_FLUXBOX_HANDLES(fw) \
|
||
|
+ ((fw)->flags.common.s.has_fluxbox_handles && (fw->flags.has_handles))
|
||
|
+#define SET_HAS_FLUXBOX_HANDLES(fw,x) \
|
||
|
+ (fw)->flags.common.s.has_fluxbox_handles = !!(x)
|
||
|
+#define SETM_HAS_FLUXBOX_HANDLES(fw,x) \
|
||
|
+ (fw)->flag_mask.common.s.has_fluxbox_handles = !!(x)
|
||
|
+#define HAS_ROUNDED_CORNERS_TOP(fw) \
|
||
|
+ ((fw)->flags.common.s.has_rounded_corners_top)
|
||
|
+#define SET_HAS_ROUNDED_CORNERS_TOP(fw,x) \
|
||
|
+ (fw)->flags.common.s.has_rounded_corners_top = !!(x)
|
||
|
+#define SETM_HAS_ROUNDED_CORNERS_TOP(fw,x) \
|
||
|
+ (fw)->flag_mask.common.s.has_rounded_corners_top = !!(x)
|
||
|
+#define HAS_ROUNDED_CORNERS_BOTTOM(fw) \
|
||
|
+ ((fw)->flags.common.s.has_rounded_corners_bottom)
|
||
|
+#define SET_HAS_ROUNDED_CORNERS_BOTTOM(fw,x) \
|
||
|
+ (fw)->flags.common.s.has_rounded_corners_bottom = !!(x)
|
||
|
+#define SETM_HAS_ROUNDED_CORNERS_BOTTOM(fw,x) \
|
||
|
+ (fw)->flag_mask.common.s.has_rounded_corners_bottom = !!(x)
|
||
|
+#define HAS_SLIGHTLY_ROUNDED_CORNERS(fw) \
|
||
|
+ ((fw)->flags.common.s.has_slightly_rounded_corners)
|
||
|
+#define SET_HAS_SLIGHTLY_ROUNDED_CORNERS_BOTTOM(fw,x) \
|
||
|
+ (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)
|
||
|
|
||
|
/* access to the special flags of a window */
|
||
|
#define DO_REUSE_DESTROYED(fw) \
|
||
|
diff --unified --recursive --text fvwm-2.6.9/fvwm/windowshade.c fvwm-patched/fvwm/windowshade.c
|
||
|
--- fvwm-2.6.9/fvwm/windowshade.c 2018-05-26 05:35:26.000000000 -0600
|
||
|
+++ fvwm-patched/fvwm/windowshade.c 2020-08-21 16:08:05.610921020 -0600
|
||
|
@@ -211,6 +211,7 @@
|
||
|
border_draw_decorations(
|
||
|
fw, PART_TITLEBAR, (fw == get_focus_window()) ? True : False,
|
||
|
0, CLEAR_BUTTONS, NULL, NULL);
|
||
|
+ frame_make_rounded_corners(fw);
|
||
|
/* update hints and inform modules */
|
||
|
BroadcastConfig(M_CONFIGURE_WINDOW, fw);
|
||
|
BroadcastPacket(
|
||
|
Only in fvwm-patched/fvwm: windowshade.c.orig
|