summaryrefslogtreecommitdiff
path: root/x11-wm/fvwm
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2024-08-16 12:22:56 +0100
committerV3n3RiX <venerix@koprulu.sector>2024-08-16 12:22:56 +0100
commit2ca31eebd5b7496656193e0aa6ae39200d69a017 (patch)
tree6cf0c8f4ce90a3960c27acf45011134fb674dd62 /x11-wm/fvwm
parent3ad1879f00b279af69d6b9cd3ef97a2a7496d734 (diff)
gentoo auto-resync : 16:08:2024 - 12:22:56
Diffstat (limited to 'x11-wm/fvwm')
-rw-r--r--x11-wm/fvwm/Manifest6
-rw-r--r--x11-wm/fvwm/files/fvwm-2.7.0-ar.patch41
-rw-r--r--x11-wm/fvwm/files/fvwm-2.7.0-translucent-menus.diff507
-rw-r--r--x11-wm/fvwm/fvwm-2.7.0-r1.ebuild171
-rw-r--r--x11-wm/fvwm/fvwm-2.7.0-r5.ebuild (renamed from x11-wm/fvwm/fvwm-2.7.0-r4.ebuild)17
-rw-r--r--x11-wm/fvwm/fvwm-2.7.0.ebuild169
6 files changed, 560 insertions, 351 deletions
diff --git a/x11-wm/fvwm/Manifest b/x11-wm/fvwm/Manifest
index a8e919e0bce8..f1e625ed84c3 100644
--- a/x11-wm/fvwm/Manifest
+++ b/x11-wm/fvwm/Manifest
@@ -3,13 +3,13 @@ AUX fvwm-2.5.27-translucent-menus.diff 15765 BLAKE2B 85623d5d671d97842ffe819ddfa
AUX fvwm-2.6.5-ar.patch 1077 BLAKE2B ebd3226a706087c7e7f7935a9862c59e628551e19be66d110441075839484b6bb26667104090258267b3e484c6fc0b0650349488902d216f3cf841c23e45b59e SHA512 fc66ee5c79b96860705d72b18aab3f8c8f8ad84fead47c4f8f944474a6bfbe0569ee08aa51e8a4d7982541eecd5c302499f99ebf8568f4b4fb1c9e2369233e45
AUX fvwm-2.6.5-mouse-buttons.patch 519 BLAKE2B 23b31933e9dcc456d73be15573226017fc213da59156040136ff447b208b45691fca00b5d16cdaf57ab8411e2834d759b3bb7e53550b13ec72de4b7f70486abb SHA512 d28a9724697859ca7beac1cc2813c12413654e1c0749297c34fb0ef8bbf97369ac8039d2a82ec673d885b39e1544259b70cecf292639caa9ff99c1b42d34c196
AUX fvwm-2.6.8-perl528.patch 515 BLAKE2B 44df7b8aef71d85c3aefefb40ab45b9e6227ef6a13aaab60cec8956db669013b4ee4dc869216972e1a443d1f69e6550e7f80dc81cdf8b7642d6c49ae46793b2a SHA512 ab35b8aef3c6d8a07f1e03290c209736ee892729d98fece3d0134fd9994f8c57bdd5703492b405a6eb52cfcd67cd9cd72c16bc25a729a46560eb6e21f2d7918f
+AUX fvwm-2.7.0-ar.patch 1243 BLAKE2B 5d01137c867629e05f7a2c5c600b4b21d06b2c061e05a4389ad2c9ba456459020a972153594800c62e68c4411e1de1012ca32ccfe4feaa1233e90d65fa6c19c2 SHA512 533fd933c180e753e482684bfd68a0f6a95b71c622336be6080f09d4d354d16c4f7c758e79529ee873f2a39d0a6adbf73a586a3709dd8ad182c67ae5d8b50c1c
AUX fvwm-2.7.0-c99.patch 3294 BLAKE2B 930615bfde3168ca47c865badab133de33ad127c648f1a29424076b61e194a6dcf2b411e5198185acc057d49fc7fd4539397270f6610a7d80abb929dd50547cc SHA512 affc46823a1e2756b72819a08976496319a10fa43eb1089f57ac0630d3d919ba9f3a8c86c62a932be989b4f7b17dbbb3712da55d188af806396c2c18175b8cdb
AUX fvwm-2.7.0-clang16.patch 1821 BLAKE2B b8acc1740eb820128625a1aab94c00faf9ba22a911e1a570b61cfe5d59e63479a5555ae22c16c2f2ec0189b8c8f195f36447fec12fc64f73fbc7c4efa0d62410 SHA512 dfe16531733986b42600b682d9e7ea17db5e546f196476d0fdf97cbfb05733c9c37d36f51a0a77d0754c0b55374be15b8dd39966bf1e454bb338245c63235a5f
AUX fvwm-2.7.0-fix-docdir.patch 361 BLAKE2B aefce92389f7ba8b8a85d67c9144e0ae6c4df6eb7ea9195ae1683a0be453e9eeaff1ad64fd1e4de174ee419c9636897639863d5d0f3f8e7fde8ade84b05358e4 SHA512 c21d5ded3ee488efc0595f44a09c9833189c5159494e96cf3c4f310aa5dfc9aba3f78452d4e9105e839e57a8a2361c9dc5840bc89e8ae67f5cf2209b6a3ab142
+AUX fvwm-2.7.0-translucent-menus.diff 15303 BLAKE2B 9689b136bf17aff87bf9b2b872a8d746268849333d06595a5147be7dbc2b6e2a9f75643c67d28564663cf0571378612ebc96e1eff22e315305501cca438c9947 SHA512 34714e25ca5a30479174c1a75ef6441e9dd7e9506e52edced1c8658979059d03b07f5373b82178c2871034155e74a0bf16b55db30784575bc7e6f06555a321fd
DIST fvwm-2.6.9.tar.gz 3942859 BLAKE2B 8faf2d420d96049ab0528a6c6a5dc6ed8ee9449f8e533b9ad9bb526faea86030684fc0aa8ed0d307cb64575457676611298adf582b1249c37a3db35a72b43bf1 SHA512 a9c2214ad19edd17da81446a6d4250284cc50b59b53c233212f2a9354c01143dbb870521392752f272f00af50bee2dd8f0b6bf6176b0d4b3075694d2a61a623e
DIST fvwm-2.7.0.tar.gz 3933529 BLAKE2B b4be7083c2946cb2a0c48673271d490a49aba5aec8407169bedc5a35f55fe8cd2724a9f6570c5e7ea110652c04956570c874256f96fa5d920a2a1ede152c0c25 SHA512 fc9076c3f07f36b0b2c7c4d2bdf7bb1a711000e39316e327173548bc99dc2b8a29b591e3644e1492f87603b576cd4a3f58ecbdd84a4384d294417b3c56c81808
EBUILD fvwm-2.6.9.ebuild 4034 BLAKE2B 603b739468c0c94f41348b62014245fd465da01622079f0bbaa68f4f3c736bce79b716ad8a3d7d6787bcbf3245340827e6308f7a5e0948afaffc0c2566676a5b SHA512 2e30f69354c6070e8b47992435a8368bc636d50498cb90f4413328703b79c9f69d5e633df9c6056c2ef7e019db1d9e020e14bf0d2e6f254c1a96c94912a440f5
-EBUILD fvwm-2.7.0-r1.ebuild 4207 BLAKE2B 9e5688558de8d59148f64192efb7af939b57196573fae988288aea1c7d083e9192e8abd659d580cf919166531218be5d1ad228501cefa347d808b0b0820341bd SHA512 45917c0c96c62574f88e8f8a95084a81df67360432e16a1f6edae99b297895108bf3b6ff42bdd350bf934a01d55e919ec3ecfc8254b94e769d0ccd8052fbcc79
-EBUILD fvwm-2.7.0-r4.ebuild 4209 BLAKE2B 505a4648aa42937a45b03ff0287ab8e3f36ced9ee1f7b2c621c21eb32a7c165aef1c801f2c88bc59e2380028c0e17248b4df1e205a9e111e950cb70d64079eae SHA512 df088592623113e21365679469dd2f208d06b709036504c1e5549798fa09609e1a90e711ddb7a6e6f7c3ddb6ce004db0f0608633b02e321f62c1ccd5922c3578
-EBUILD fvwm-2.7.0.ebuild 4256 BLAKE2B b88389581da14df1c3328b439068d619ce071d1a847d7259babe787e65a9e2851b310795aa1c93b6ecec766f515ad0792b33747358fb04979b82a2a2a60c87d1 SHA512 3f5956ae078e98839a50f09aa70a43e6f732a7fb7a3749032a43166fd57405f7f9363e12315d3c03ce81d3098495906f8f8ba1b72b2089a9e3201b4a02c8645a
+EBUILD fvwm-2.7.0-r5.ebuild 4134 BLAKE2B d8b014976240387e30255b6a15b0242c57df5a75dda356eb4d679682d3f75ef0127bdbc4aa3e316b57758dc4732b7194ef64d6cbec10f8086cbc2f1854144095 SHA512 8ff8ed5024d074f579b80f82d4de66c92f7dd4917ea226ba7ce2ea0adf8aa229040ce5d22ff508ccb5127623c1403321a28ac6f0c581c1088c73452c3e50eb14
MISC metadata.xml 736 BLAKE2B c9ff0661b5a87747a83a9d0f88f2a994e23e9e741e669fab4bd42351f74eb9dd8d55ae7d9a56d3a865eef344484a489f08359cc0e44874787fed0538f977c159 SHA512 5b06fe1d24d811fe7c408f38849c06360a5e59d98e5076214cdf041f95f5ed5ae4b625331337ce7c0d00db62fd4db6ca78f6cb2902409f340ba47d8204ab5692
diff --git a/x11-wm/fvwm/files/fvwm-2.7.0-ar.patch b/x11-wm/fvwm/files/fvwm-2.7.0-ar.patch
new file mode 100644
index 000000000000..80ceca36f3b2
--- /dev/null
+++ b/x11-wm/fvwm/files/fvwm-2.7.0-ar.patch
@@ -0,0 +1,41 @@
+diff --git i/configure.ac w/configure.ac
+index 97ab9e7..8cd2efb 100644
+--- i/configure.ac
++++ w/configure.ac
+@@ -208,6 +208,10 @@ AC_MSG_RESULT($val)
+ # optional libraries.
+ AC_PROG_CC
+ AC_PROG_CPP
++AN_MAKEVAR([AR], [AC_PROG_AR])
++AN_PROGRAM([ar], [AC_PROG_AR])
++AC_DEFUN([AC_PROG_AR], [AC_CHECK_TOOL(AR, ar, :)])
++AC_PROG_AR
+
+ # added -Wall for gcc, what about for others?
+ if test "x$GCC" = "xyes"; then
+diff --git i/libs/Makefile.in w/libs/Makefile.in
+index 28b6732..c66d3e4 100644
+--- i/libs/Makefile.in
++++ w/libs/Makefile.in
+@@ -100,7 +100,7 @@ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LIBRARIES = $(noinst_LIBRARIES)
+-AR = ar
++AR = @AR@
+ ARFLAGS = cru
+ AM_V_AR = $(am__v_AR_@AM_V@)
+ am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
+diff --git i/modules/FvwmScript/Widgets/Makefile.in w/modules/FvwmScript/Widgets/Makefile.in
+index 8bda02d..582b046 100644
+--- i/modules/FvwmScript/Widgets/Makefile.in
++++ w/modules/FvwmScript/Widgets/Makefile.in
+@@ -100,7 +100,7 @@ CONFIG_HEADER = $(top_builddir)/config.h
+ CONFIG_CLEAN_FILES =
+ CONFIG_CLEAN_VPATH_FILES =
+ LIBRARIES = $(noinst_LIBRARIES)
+-AR = ar
++AR = @AR@
+ ARFLAGS = cru
+ AM_V_AR = $(am__v_AR_@AM_V@)
+ am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@)
diff --git a/x11-wm/fvwm/files/fvwm-2.7.0-translucent-menus.diff b/x11-wm/fvwm/files/fvwm-2.7.0-translucent-menus.diff
new file mode 100644
index 000000000000..67f0a3bf0cd5
--- /dev/null
+++ b/x11-wm/fvwm/files/fvwm-2.7.0-translucent-menus.diff
@@ -0,0 +1,507 @@
+diff --git i/fvwm/colorset.c w/fvwm/colorset.c
+index e10f1d1..0217cc3 100644
+--- i/fvwm/colorset.c
++++ w/fvwm/colorset.c
+@@ -164,6 +164,8 @@ static char *csetopts[] =
+ "NoIconTint",
+ "IconAlpha",
+
++ "Translucent",
++ "NoTranslucent",
+ NULL
+ };
+
+@@ -625,6 +627,7 @@ void parse_colorset(int n, char *line)
+ char *fg_tint = NULL;
+ char *bg_tint = NULL;
+ char *icon_tint = NULL;
++ char *translucent_tint = NULL;
+ Bool have_pixels_changed = False;
+ Bool has_icon_pixels_changed = False;
+ Bool has_fg_changed = False;
+@@ -637,6 +640,7 @@ void parse_colorset(int n, char *line)
+ Bool has_fg_tint_changed = False;
+ Bool has_bg_tint_changed = False;
+ Bool has_icon_tint_changed = False;
++ Bool has_translucent_tint_changed = False;
+ Bool has_pixmap_changed = False;
+ Bool has_shape_changed = False;
+ Bool has_image_alpha_changed = False;
+@@ -764,6 +768,10 @@ void parse_colorset(int n, char *line)
+ case 21: /* Plain */
+ has_pixmap_changed = True;
+ free_colorset_background(cs, True);
++ cs->is_translucent = False;
++ cs->translucent_tint_percent = 0;
++ cs->color_flags &= ~TRANSLUCENT_TINT_SUPPLIED;
++ has_translucent_tint_changed = True;
+ break;
+ case 22: /* NoShape */
+ has_shape_changed = True;
+@@ -930,6 +938,24 @@ void parse_colorset(int n, char *line)
+ cs->icon_alpha_percent = tmp;
+ }
+ break;
++ case 42: /* Translucent */
++ cs->is_translucent = True;
++ parse_simple_tint(
++ cs, args, &translucent_tint,
++ TRANSLUCENT_TINT_SUPPLIED,
++ &has_translucent_tint_changed, &percent,
++ "Translucent");
++ if (has_translucent_tint_changed)
++ {
++ cs->translucent_tint_percent = percent;
++ }
++ break;
++ case 43: /* NoTranslucent */
++ cs->is_translucent = False;
++ cs->translucent_tint_percent = 0;
++ cs->color_flags &= ~TRANSLUCENT_TINT_SUPPLIED;
++ has_translucent_tint_changed = True;
++ break;
+ default:
+ /* test for ?Gradient */
+ if (option[0] && StrEquals(&option[1], "Gradient"))
+@@ -1632,6 +1658,27 @@ void parse_colorset(int n, char *line)
+ }
+ }
+
++ /*
++ * ---------- change the translucent tint colour ----------
++ */
++ if (has_translucent_tint_changed)
++ {
++ /* user specified colour */
++ if (translucent_tint != NULL)
++ {
++ PictureFreeColors(
++ dpy, Pcmap, &cs->translucent_tint, 1, 0, True);
++ cs->translucent_tint = GetColor(translucent_tint);
++ }
++ else
++ {
++ /* default */
++ PictureFreeColors(
++ dpy, Pcmap, &cs->translucent_tint, 1, 0, True);
++ cs->translucent_tint = GetColor(black);
++ }
++ }
++
+ /*
+ * ---------- send new colorset to fvwm and clean up ----------
+ */
+@@ -1728,6 +1775,7 @@ void alloc_colorset(int n)
+ ncs->fgsh = GetColor(white);
+ ncs->tint = GetColor(black);
+ ncs->icon_tint = GetColor(black);
++ ncs->translucent_tint = GetColor(black);
+ ncs->pixmap = XCreatePixmapFromBitmapData(
+ dpy, Scr.NoFocusWin,
+ &g_bits[4 * (nColorsets % 3)], 4, 4,
+@@ -1745,6 +1793,7 @@ void alloc_colorset(int n)
+ ncs->fgsh = GetForeShadow(ncs->fg, ncs->bg);
+ ncs->tint = GetColor(black);
+ ncs->icon_tint = GetColor(black);
++ ncs->translucent_tint = GetColor(black);
+ }
+ ncs->fg_tint = ncs->bg_tint = GetColor(black);
+ /* set flags for fg contrast, bg average */
+@@ -1756,6 +1805,7 @@ void alloc_colorset(int n)
+ ncs->icon_alpha_percent = 100;
+ ncs->tint_percent = 0;
+ ncs->icon_tint_percent = 0;
++ ncs->translucent_tint_percent = 0;
+ ncs->fg_tint_percent = ncs->bg_tint_percent = 0;
+ ncs->dither = (PictureDitherByDefault())? True:False;
+ nColorsets++;
+diff --git i/fvwm/menuroot.h w/fvwm/menuroot.h
+index d9f33d6..de5e2d6 100644
+--- i/fvwm/menuroot.h
++++ w/fvwm/menuroot.h
+@@ -146,6 +146,9 @@ typedef struct MenuRootDynamic
+ int d_npixels;
+ } stored_pixels;
+ /* alloc pixels when dithering is used for gradients */
++ /* x,y XMapRaise */
++ int x;
++ int y;
+ } MenuRootDynamic;
+
+ /* access macros to dynamic menu members */
+diff --git i/fvwm/menus.c w/fvwm/menus.c
+index 345ac06..6daf035 100644
+--- i/fvwm/menus.c
++++ w/fvwm/menus.c
+@@ -78,6 +78,19 @@
+ #define SCTX_GET_MR(ctx) ((ctx).type == SCTX_MENU_ROOT ? \
+ (ctx).menu_root.menu_root : NULL)
+
++#define MENU_IS_TRANSLUCENT(mr,cs) \
++ (!MR_IS_TEAR_OFF_MENU(mr) && CSET_IS_TRANSLUCENT(cs))
++#define MENU_IS_TRANSPARENT(mr,cs) \
++ (MENU_IS_TRANSLUCENT(mr,cs) || CSET_IS_TRANSPARENT(cs))
++#define MR_IS_TRANSLUCENT_MENU(mr) \
++ (!MR_IS_TEAR_OFF_MENU(mr) && MR_STYLE(mr) && \
++ ST_HAS_MENU_CSET(MR_STYLE(mr)) && CSET_IS_TRANSLUCENT( \
++ ST_CSET_MENU(MR_STYLE(mr))))
++#define MR_IS_TRANSPARENT_MENU(mr) \
++ (MR_IS_TRANSLUCENT_MENU(mr) || (MR_STYLE(mr) && \
++ ST_HAS_MENU_CSET(MR_STYLE(mr)) && CSET_IS_TRANSPARENT( \
++ ST_CSET_MENU(MR_STYLE(mr)))))
++
+ /* ---------------------------- imports ------------------------------------ */
+
+ /* This external is safe. It's written only during startup. */
+@@ -220,6 +233,8 @@ typedef struct mloop_static_info_t
+ } mloop_static_info_t;
+
+ /* ---------------------------- forward declarations ----------------------- */
++static MenuRoot *seek_submenu_instance(
++ MenuRoot *parent_menu, MenuItem *parent_item);
+
+ /* ---------------------------- local variables ---------------------------- */
+
+@@ -381,12 +396,22 @@ static void animated_move_back(
+ Bool transparent_bg = False;
+
+ /* move it back */
+- if (ST_HAS_MENU_CSET(MR_STYLE(mr)) &&
+- CSET_IS_TRANSPARENT(ST_CSET_MENU(MR_STYLE(mr))))
++ if (MR_IS_TRANSPARENT_MENU(mr))
+ {
+ transparent_bg = True;
+ get_menu_repaint_transparent_parameters(
+ &mrtp, mr, fw);
++ if (MR_IS_TRANSLUCENT_MENU(mr) && MR_SUBMENU_ITEM(mr))
++ {
++ MenuRoot *smr;
++ smr = seek_submenu_instance(
++ mr, MR_SUBMENU_ITEM(mr));
++ if (smr)
++ {
++ /* just unmap it here, popdown later */
++ XUnmapWindow(dpy, MR_WINDOW(smr));
++ }
++ }
+ }
+ AnimatedMoveOfWindow(
+ MR_WINDOW(mr), act_x, act_y, act_x - MR_XANIMATION(mr),
+@@ -1912,6 +1937,7 @@ static void make_menu_window(MenuRoot *mr, Bool is_tear_off)
+ /* Doh. Use the standard display instead. */
+ MR_CREATE_DPY(mr) = dpy;
+ }
++ MR_IS_TEAR_OFF_MENU(mr) = 1;
+ }
+ else
+ {
+@@ -2716,7 +2742,37 @@ static void paint_menu(
+ }
+ MR_IS_PAINTED(mr) = 1;
+ /* paint the menu background */
+- if (ms && ST_HAS_MENU_CSET(ms))
++ if (MR_IS_TRANSLUCENT_MENU(mr))
++ {
++ Pixmap trans = None;
++ FvwmRenderAttributes fra;
++ colorset_t *colorset = &Colorset[ST_CSET_MENU(ms)];
++
++ fra.mask = 0;
++ if (colorset->translucent_tint_percent > 0)
++ {
++ fra.mask = FRAM_HAVE_TINT;
++ fra.tint = colorset->translucent_tint;
++ fra.tint_percent = colorset->translucent_tint_percent;
++ }
++ if (MR_IS_BACKGROUND_SET(mr) == False)
++ {
++ trans = PGraphicsCreateTranslucent(
++ dpy, MR_WINDOW(mr), &fra,
++ BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++ MR_X(mr), MR_Y(mr), MR_WIDTH(mr), MR_HEIGHT(mr));
++ XMapRaised(dpy, MR_WINDOW(mr));
++ if (trans != None)
++ {
++ XSetWindowBackgroundPixmap(
++ dpy, MR_WINDOW(mr), trans);
++ MR_IS_BACKGROUND_SET(mr) = True;
++ clear_expose_menu_area(MR_WINDOW(mr), pevent);
++ XFreePixmap(dpy, trans);
++ }
++ }
++ }
++ else if (ms && ST_HAS_MENU_CSET(ms))
+ {
+ if (MR_IS_BACKGROUND_SET(mr) == False)
+ {
+@@ -3525,10 +3581,7 @@ static int pop_menu_up(
+ MR_HAS_POPPED_UP_RIGHT(mr) = 0;
+ }
+ MR_XANIMATION(parent_menu) += end_x - prev_x;
+- if (ST_HAS_MENU_CSET(MR_STYLE(parent_menu)) &&
+- CSET_IS_TRANSPARENT(
+- ST_CSET_MENU(
+- MR_STYLE(parent_menu))))
++ if (MR_IS_TRANSPARENT_MENU(parent_menu))
+ {
+ transparent_bg = True;
+ get_menu_repaint_transparent_parameters(
+@@ -3707,10 +3760,21 @@ static int pop_menu_up(
+ */
+
+ XMoveWindow(dpy, MR_WINDOW(mr), x, y);
++ MR_X(mr) = x;
++ MR_Y(mr) = y;
+ XSelectInput(dpy, MR_WINDOW(mr), event_mask);
+- XMapRaised(dpy, MR_WINDOW(mr));
+- if (popdown_window)
+- XUnmapWindow(dpy, popdown_window);
++ if (MR_IS_TRANSLUCENT_MENU(mr))
++ {
++ if (popdown_window)
++ XUnmapWindow(dpy, popdown_window);
++ paint_menu(mr, NULL, fw);
++ }
++ else
++ {
++ XMapRaised(dpy, MR_WINDOW(mr));
++ if (popdown_window)
++ XUnmapWindow(dpy, popdown_window);
++ }
+ XFlush(dpy);
+ MR_MAPPED_COPIES(mr)++;
+ MST_USAGE_COUNT(mr)++;
+@@ -6274,16 +6338,122 @@ void update_transparent_menu_bg(
+ {
+ last = True;
+ }
+- if (!last && CSET_IS_TRANSPARENT_PR_TINT(ST_CSET_MENU(ms)))
++ if (!last &&
++ (CSET_IS_TRANSPARENT_PR_TINT(ST_CSET_MENU(ms)) ||
++ MR_IS_TRANSLUCENT_MENU(mr)))
+ {
+ /* too slow ... */
+ return;
+ }
+- SetWindowBackgroundWithOffset(
+- dpy, MR_WINDOW(mr), step_x - current_x, step_y - current_y,
+- MR_WIDTH(mr), MR_HEIGHT(mr),
+- &Colorset[ST_CSET_MENU(ms)], Pdepth,
+- FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
++ if (MR_IS_TRANSLUCENT_MENU(mr))
++ {
++ Pixmap trans, tmp;
++ FvwmRenderAttributes fra;
++ colorset_t *colorset = &Colorset[ST_CSET_MENU(ms)];
++
++ fra.mask = 0;
++ if (colorset->translucent_tint_percent > 0)
++ {
++ fra.mask = FRAM_HAVE_TINT;
++ fra.tint = colorset->translucent_tint;
++ fra.tint_percent = colorset->translucent_tint_percent;
++ }
++ if (current_x == step_x)
++ {
++ /* Reuse the old pixmap for the part of the menu
++ * that has not moved. (This can be extended to get
++ * two new rectangles, one in each direction)
++ *
++ * It saves the unmapping of the window and makes
++ * Things less flickering.
++ */
++ GC my_gc;
++ unsigned long valuemask = GCSubwindowMode;
++ XGCValues values;
++ int out_y=0;
++ values.subwindow_mode = IncludeInferiors;
++ if (step_y < 0)
++ {
++ out_y = -step_y;
++ }
++ trans = XCreatePixmap(dpy, MR_WINDOW(mr), MR_WIDTH(mr),
++ MR_HEIGHT(mr), Pdepth);
++ my_gc = fvwmlib_XCreateGC(dpy, MR_WINDOW(mr), 0, NULL);
++ XChangeGC(dpy, my_gc, valuemask, &values);
++
++ XClearWindow(dpy, MR_WINDOW(mr));
++
++ if (current_y < step_y)
++ {
++ XCopyArea(dpy, MR_WINDOW(mr), trans, my_gc, 0,
++ step_y-current_y, MR_WIDTH(mr),
++ MR_HEIGHT(mr)-(step_y-current_y),
++ 0,0);
++ tmp = PGraphicsCreateTranslucent(
++ dpy, MR_WINDOW(mr), &fra,
++ BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++ current_x, current_y+MR_HEIGHT(mr),
++ MR_WIDTH(mr), step_y-current_y);
++
++ XCopyArea(dpy, tmp, trans, my_gc, 0, 0,
++ MR_WIDTH(mr), step_y-current_y,0,
++ MR_HEIGHT(mr)-(step_y-current_y));
++ }
++ else
++ {
++ XCopyArea(dpy, MR_WINDOW(mr), trans, my_gc, 0,
++ 0, MR_WIDTH(mr),
++ MR_HEIGHT(mr)-(current_y-step_y), 0,
++ current_y-step_y);
++ tmp = PGraphicsCreateTranslucent(
++ dpy, MR_WINDOW(mr), &fra,
++ BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++ current_x,step_y, MR_WIDTH(mr),
++ current_y-step_y);
++ XCopyArea(dpy, tmp, trans, my_gc, 0, 0,
++ MR_WIDTH(mr), current_y-step_y,0,
++ out_y);
++ }
++ MR_X(mr) = step_x;
++ MR_Y(mr) = step_y;
++ XFreePixmap(dpy, tmp);
++ XFreeGC(dpy,my_gc);
++ }
++ else
++ {
++ XUnmapWindow(dpy, MR_WINDOW(mr));
++ MR_X(mr) = step_x;
++ MR_Y(mr) = step_y;
++ trans = PGraphicsCreateTranslucent(
++ dpy, MR_WINDOW(mr), &fra,
++ BACK_GC(ST_MENU_INACTIVE_GCS(ms)),
++ step_x, step_y, MR_WIDTH(mr),
++ MR_HEIGHT(mr));
++ XMapRaised(dpy, MR_WINDOW(mr));
++ }
++ XSetWindowBackgroundPixmap(
++ dpy, MR_WINDOW(mr), trans);
++ XFreePixmap(dpy, trans);
++ if (current_x == step_x)
++ {
++ /* Redraw the border */
++ RelieveRectangle(
++ dpy, MR_WINDOW(mr), 0, 0, MR_WIDTH(mr) - 1,
++ MR_HEIGHT(mr) - 1, (Pdepth < 2) ?
++ SHADOW_GC(MST_MENU_INACTIVE_GCS(mr)) :
++ HILIGHT_GC(MST_MENU_INACTIVE_GCS(mr)),
++ SHADOW_GC(MST_MENU_INACTIVE_GCS(mr)),
++ MST_BORDER_WIDTH(mr));
++ }
++ }
++ else
++ {
++ SetWindowBackgroundWithOffset(
++ dpy, MR_WINDOW(mr), step_x - current_x,
++ step_y - current_y, MR_WIDTH(mr), MR_HEIGHT(mr),
++ &Colorset[ST_CSET_MENU(ms)], Pdepth,
++ FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
++ }
+ }
+
+
+@@ -6324,10 +6494,7 @@ void repaint_transparent_menu(
+ }
+ if (!is_bg_set)
+ {
+- SetWindowBackground(
+- dpy, MR_WINDOW(mr), MR_WIDTH(mr), MR_HEIGHT(mr),
+- &Colorset[ST_CSET_MENU(ms)], Pdepth,
+- FORE_GC(MST_MENU_INACTIVE_GCS(mr)), False);
++ update_transparent_menu_bg(prtm, x, y, x, y, end_x, end_y);
+ }
+ /* redraw the background of non active item */
+ for (mi = MR_FIRST_ITEM(mr); mi != NULL; mi = MI_NEXT_ITEM(mi))
+@@ -6951,10 +7118,12 @@ void UpdateMenuColorset(int cset)
+ SetWindowBackground(
+ dpy, MR_WINDOW(mr), MR_WIDTH(mr),
+ MR_HEIGHT(mr),
+- &Colorset[ST_CSET_MENU(ms)],
+- Pdepth,
++ &Colorset[ST_CSET_MENU(ms)], Pdepth,
+ FORE_GC(MST_MENU_INACTIVE_GCS(mr)),
+- True);
++ False);
++ XClearArea(
++ dpy, MR_WINDOW(mr), 0, 0, MR_WIDTH(mr),
++ MR_HEIGHT(mr), True);
+ }
+ else if ((ST_HAS_ACTIVE_CSET(ms) &&
+ ST_CSET_ACTIVE(ms) == cset) ||
+diff --git i/fvwm/menus.h w/fvwm/menus.h
+index 28e9db3..6b620b2 100644
+--- i/fvwm/menus.h
++++ w/fvwm/menus.h
+@@ -15,6 +15,9 @@
+ #define IS_MENU_RETURN(x) \
+ ((x)==MENU_DONE || (x)==MENU_ABORTED || (x)==MENU_SUBMENU_TORN_OFF)
+
++#define MR_X(m) ((m)->d->x)
++#define MR_Y(m) ((m)->d->y)
++
+ struct MenuRoot;
+ struct MenuStyle;
+ struct MenuReturn;
+diff --git i/libs/Colorset.h w/libs/Colorset.h
+index d610b52..6c1892e 100644
+--- i/libs/Colorset.h
++++ w/libs/Colorset.h
+@@ -51,6 +51,10 @@ typedef struct
+ Bool dither;
+ Bool allows_buffered_transparency;
+ Bool is_maybe_root_transparent;
++ /* only use by fvwm menu (non tear-off) */
++ Bool is_translucent;
++ Pixel translucent_tint;
++ unsigned int translucent_tint_percent : 7;
+ #endif
+ } colorset_t;
+
+@@ -78,6 +82,7 @@ typedef struct
+ #define FG_TINT_SUPPLIED 0x100
+ #define BG_TINT_SUPPLIED 0x200
+ #define ICON_TINT_SUPPLIED 0x400
++#define TRANSLUCENT_TINT_SUPPLIED 0x800
+ #endif
+
+ /* colorsets are stored as an array of structs to permit fast dereferencing */
+@@ -153,6 +158,11 @@ extern colorset_t *Colorset;
+ (cset != NULL && cset->pixmap == ParentRelative && \
+ cset->tint_percent > 0)
+
++#define CSET_IS_TRANSLUCENT(cset) \
++ (cset >= 0 && Colorset[cset].is_translucent)
++#define CSETS_IS_TRANSLUCENT(cset) \
++ (cset && cset->is_translucent)
++
+ #ifndef FVWM_COLORSET_PRIVATE
+ /* Create n new colorsets, fvwm/colorset.c does its own thing (different size)
+ */
+diff --git i/libs/PictureGraphics.c w/libs/PictureGraphics.c
+index f861726..a2fdbea 100644
+--- i/libs/PictureGraphics.c
++++ w/libs/PictureGraphics.c
+@@ -1360,7 +1360,7 @@ void PGraphicsTintRectangle(
+ }
+ }
+
+-#if 0 /* humm... maybe useful one day with menus */
++#if 1 /* humm... maybe useful one day with menus */
+ Pixmap PGraphicsCreateTranslucent(
+ Display *dpy, Window win, FvwmRenderAttributes *fra, GC gc,
+ int x, int y, int width, int height)
+diff --git i/libs/PictureGraphics.h w/libs/PictureGraphics.h
+index ec75601..5e0001d 100644
+--- i/libs/PictureGraphics.h
++++ w/libs/PictureGraphics.h
+@@ -122,7 +122,9 @@ void PGraphicsTintRectangle(
+ Display *dpy, Window win, Pixel tint, int tint_percent,
+ Drawable dest, Bool dest_is_a_window, GC gc, GC mono_gc, GC alpha_gc,
+ int dest_x, int dest_y, int dest_w, int dest_h);
+-
++Pixmap PGraphicsCreateTranslucent(
++ Display *dpy, Window win, FvwmRenderAttributes *fra, GC gc,
++ int x, int y, int width, int height);
+ /* never used ! */
+ Pixmap PGraphicsCreateDitherPixmap(
+ Display *dpy, Window win, Drawable src, Pixmap mask, int depth, GC gc,
diff --git a/x11-wm/fvwm/fvwm-2.7.0-r1.ebuild b/x11-wm/fvwm/fvwm-2.7.0-r1.ebuild
deleted file mode 100644
index 775437b687c9..000000000000
--- a/x11-wm/fvwm/fvwm-2.7.0-r1.ebuild
+++ /dev/null
@@ -1,171 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{9..11} )
-inherit autotools flag-o-matic python-single-r1 desktop
-
-DESCRIPTION="An extremely powerful ICCCM-compliant multiple virtual desktop window manager"
-HOMEPAGE="https://www.fvwm.org/"
-SRC_URI="https://github.com/fvwmorg/fvwm/releases/download/${PV}/${P}.tar.gz"
-
-LICENSE="GPL-2+ FVWM"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~ia64 ppc ~ppc64 ~riscv ~sparc x86"
-IUSE="bidi debug doc netpbm nls perl png readline stroke svg tk truetype +vanilla xinerama lock"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-COMMON_DEPEND="
- sys-libs/zlib
- x11-libs/libICE
- x11-libs/libSM
- x11-libs/libX11
- x11-libs/libXau
- x11-libs/libxcb
- x11-libs/libXcursor
- x11-libs/libXdmcp
- x11-libs/libXext
- x11-libs/libXfixes
- x11-libs/libXpm
- x11-libs/libXrandr
- x11-libs/libXrender
- virtual/libiconv
- $(python_gen_cond_dep '
- dev-python/pyxdg[${PYTHON_USEDEP}]
- ')
- bidi? ( dev-libs/fribidi )
- nls? ( virtual/libintl )
- png? ( media-libs/libpng:0= )
- readline? (
- sys-libs/ncurses:0=
- sys-libs/readline:0=
- )
- stroke? ( dev-libs/libstroke )
- svg? ( gnome-base/librsvg )
- truetype? (
- media-libs/fontconfig
- x11-libs/libXft
- )
- xinerama? ( x11-libs/libXinerama )
-"
-RDEPEND="${COMMON_DEPEND}
- ${PYTHON_DEPS}
- dev-lang/perl
- sys-apps/debianutils
- perl? ( tk? (
- dev-lang/tk
- dev-perl/Tk
- >=dev-perl/X11-Protocol-0.56
- )
- )
- lock? ( x11-misc/xlockmore )
- netpbm? ( media-libs/netpbm )
-"
-DEPEND="${COMMON_DEPEND}
- x11-base/xorg-proto
-"
-BDEPEND="
- dev-lang/perl
- dev-libs/libxslt
- virtual/pkgconfig
-"
-
-src_prepare() {
- if ! use vanilla; then
- # Enables fast translucent menus; patch from fvwm-user mailing list.
- eapply -p0 "${FILESDIR}/${PN}-2.5.27-translucent-menus.diff"
-
- # Allow more mouse buttons, bug #411811
- eapply -p0 "${FILESDIR}/${PN}-2.6.5-mouse-buttons.patch"
- fi
-
- eapply -p0 "${FILESDIR}/${PN}-2.6.5-ar.patch" #474528
-
- eapply "${FILESDIR}"/fvwm-2.7.0-clang16.patch
-
- default
-
- eautoreconf
-}
-
-src_configure() {
- local myeconfargs=(
- --libexecdir="${EPREFIX}"/usr/$(get_libdir)
- --with-imagepath=/usr/include/X11/bitmaps:/usr/include/X11/pixmaps:/usr/share/icons/fvwm
- --enable-iconv
- --enable-package-subdirs
- --enable-mandoc
- --without-rplay-library
- $(use_enable bidi)
- $(use_enable debug debug-msgs)
- $(use_enable debug command-log)
- $(use_enable doc htmldoc)
- $(use_enable nls)
- $(use_enable perl perllib)
- $(use_enable png)
- $(use_with readline readline-library)
- $(use_with stroke stroke-library)
- $(use_enable svg rsvg)
- $(use_enable truetype xft)
- $(use_enable xinerama)
- )
-
- # Non-upstream email where bugs should be sent; used in fvwm-bug.
- export FVWM_BUGADDR="maintainer-needed@gentoo.org"
-
- # Recommended by upstream, reference ????
- append-flags -fno-strict-aliasing
-
- # Signed chars are required.
- use ppc && append-flags -fsigned-char
-
- use readline && myeconfargs+=( --without-termcap-library )
-
- export ac_cv_path_PYTHON="${PYTHON}"
-
- econf "${myeconfargs[@]}"
-}
-
-src_install() {
- default
- make_session_desktop fvwm /usr/bin/fvwm
-
- if ! use lock; then
- find "${D}" -name '*fvwm-menu-xlock' -exec rm -f '{}' \; 2>/dev/null
- fi
-
- if use perl; then
- if ! use tk; then
- rm "${D}"/usr/share/fvwm/perllib/FVWM/Module/Tk.pm || die
- rm "${D}"/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm || die
- find "${D}"/usr/share/fvwm/perllib -depth -type d -exec rmdir '{}' \; 2>/dev/null
- fi
- else
- # Completely wipe it if ! use perl
- rm -r "${D}"/usr/bin/fvwm-perllib "${D}"/usr/share/man/man1/fvwm-perllib.1
- fi
-
- # Utility for testing FVWM behaviour by creating a simple window with
- # configurable hints.
- if use debug; then
- dobin "${S}"/tests/hints/hints_test
- newdoc "${S}"/tests/hints/README README.hints
- fi
-
- exeinto /etc/X11/Sessions
- newexe - ${PN} <<-EOF
- #!/bin/sh
- ${PN}
- EOF
-
- dodoc docs/{COMMANDS,DEVELOPERS.md}
-
- # README file for translucent menus patch.
- if ! use vanilla; then
- dodoc "${FILESDIR}"/README.translucency
- ewarn "You are using a patched build, so, please, don't"
- ewarn "report bugs at the fvwm-workers list unless you are"
- ewarn "also able to reproduce them with a vanilla build (USE=vanilla)."
- fi
-}
diff --git a/x11-wm/fvwm/fvwm-2.7.0-r4.ebuild b/x11-wm/fvwm/fvwm-2.7.0-r5.ebuild
index ba08db44f026..36cb5394a2dc 100644
--- a/x11-wm/fvwm/fvwm-2.7.0-r4.ebuild
+++ b/x11-wm/fvwm/fvwm-2.7.0-r5.ebuild
@@ -49,7 +49,8 @@ COMMON_DEPEND="
)
xinerama? ( x11-libs/libXinerama )
"
-RDEPEND="${COMMON_DEPEND}
+RDEPEND="
+ ${COMMON_DEPEND}
${PYTHON_DEPS}
dev-lang/perl
perl? ( tk? (
@@ -61,7 +62,8 @@ RDEPEND="${COMMON_DEPEND}
lock? ( x11-misc/xlockmore )
netpbm? ( media-libs/netpbm )
"
-DEPEND="${COMMON_DEPEND}
+DEPEND="
+ ${COMMON_DEPEND}
x11-base/xorg-proto
"
BDEPEND="
@@ -73,14 +75,10 @@ BDEPEND="
src_prepare() {
if ! use vanilla; then
# Enables fast translucent menus; patch from fvwm-user mailing list.
- eapply -p0 "${FILESDIR}/${PN}-2.5.27-translucent-menus.diff"
-
- # Allow more mouse buttons, bug #411811
- eapply -p0 "${FILESDIR}/${PN}-2.6.5-mouse-buttons.patch"
+ eapply "${FILESDIR}/${PN}-2.7.0-translucent-menus.diff"
fi
- eapply -p0 "${FILESDIR}/${PN}-2.6.5-ar.patch" #474528
-
+ eapply "${FILESDIR}"/fvwm-2.7.0-ar.patch # bug #474528
eapply "${FILESDIR}"/fvwm-2.7.0-c99.patch
eapply "${FILESDIR}"/fvwm-2.7.0-fix-docdir.patch
@@ -117,6 +115,9 @@ src_configure() {
# Recommended by upstream, reference ????
append-flags -fno-strict-aliasing
+ # bug #864959
+ filter-lto
+
# Signed chars are required.
use ppc && append-flags -fsigned-char
diff --git a/x11-wm/fvwm/fvwm-2.7.0.ebuild b/x11-wm/fvwm/fvwm-2.7.0.ebuild
deleted file mode 100644
index b1f6bbd833aa..000000000000
--- a/x11-wm/fvwm/fvwm-2.7.0.ebuild
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright 1999-2023 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{9..11} )
-inherit autotools flag-o-matic python-single-r1 desktop
-
-DESCRIPTION="An extremely powerful ICCCM-compliant multiple virtual desktop window manager"
-HOMEPAGE="https://www.fvwm.org/"
-SRC_URI="https://github.com/fvwmorg/fvwm/releases/download/${PV}/${P}.tar.gz"
-
-LICENSE="GPL-2+ FVWM"
-SLOT="0"
-KEYWORDS="~alpha amd64 ~arm ~ia64 ppc ~ppc64 ~riscv ~sparc x86"
-IUSE="bidi debug doc netpbm nls perl png readline stroke svg tk truetype +vanilla xinerama lock"
-REQUIRED_USE="${PYTHON_REQUIRED_USE}"
-
-COMMON_DEPEND="
- sys-libs/zlib
- x11-libs/libICE
- x11-libs/libSM
- x11-libs/libX11
- x11-libs/libXau
- x11-libs/libxcb
- x11-libs/libXcursor
- x11-libs/libXdmcp
- x11-libs/libXext
- x11-libs/libXfixes
- x11-libs/libXpm
- x11-libs/libXrandr
- x11-libs/libXrender
- virtual/libiconv
- $(python_gen_cond_dep '
- dev-python/pyxdg[${PYTHON_USEDEP}]
- ')
- bidi? ( dev-libs/fribidi )
- nls? ( virtual/libintl )
- png? ( media-libs/libpng:0= )
- readline? (
- sys-libs/ncurses:0=
- sys-libs/readline:0=
- )
- stroke? ( dev-libs/libstroke )
- svg? ( gnome-base/librsvg )
- truetype? (
- media-libs/fontconfig
- x11-libs/libXft
- )
- xinerama? ( x11-libs/libXinerama )
-"
-RDEPEND="${COMMON_DEPEND}
- ${PYTHON_DEPS}
- dev-lang/perl
- sys-apps/debianutils
- perl? ( tk? (
- dev-lang/tk
- dev-perl/Tk
- >=dev-perl/X11-Protocol-0.56
- )
- )
- lock? ( x11-misc/xlockmore )
- netpbm? ( media-libs/netpbm )
-"
-DEPEND="${COMMON_DEPEND}
- x11-base/xorg-proto
-"
-BDEPEND="
- dev-lang/perl
- dev-libs/libxslt
- virtual/pkgconfig
-"
-
-src_prepare() {
- if ! use vanilla; then
- # Enables fast translucent menus; patch from fvwm-user mailing list.
- eapply -p0 "${FILESDIR}/${PN}-2.5.27-translucent-menus.diff"
-
- # Allow more mouse buttons, bug #411811
- eapply -p0 "${FILESDIR}/${PN}-2.6.5-mouse-buttons.patch"
- fi
-
- eapply -p0 "${FILESDIR}/${PN}-2.6.5-ar.patch" #474528
-
- eapply "${FILESDIR}"/fvwm-2.7.0-clang16.patch
-
- default
-
- eautoreconf
-}
-
-src_configure() {
- local myeconfargs=(
- --libexecdir="${EPREFIX}"/usr/$(get_libdir)
- --with-imagepath=/usr/include/X11/bitmaps:/usr/include/X11/pixmaps:/usr/share/icons/fvwm
- --enable-iconv
- --enable-package-subdirs
- --enable-mandoc
- --without-rplay-library
- $(use_enable bidi)
- $(use_enable debug debug-msgs)
- $(use_enable debug command-log)
- $(use_enable doc htmldoc)
- $(use_enable nls)
- $(use_enable perl perllib)
- $(use_enable png)
- $(use_with readline readline-library)
- $(use_with stroke stroke-library)
- $(use_enable svg rsvg)
- $(use_enable truetype xft)
- $(use_enable xinerama)
- )
-
- # Non-upstream email where bugs should be sent; used in fvwm-bug.
- export FVWM_BUGADDR="maintainer-needed@gentoo.org"
-
- # Recommended by upstream, reference ????
- append-flags -fno-strict-aliasing
-
- # Signed chars are required.
- use ppc && append-flags -fsigned-char
-
- use readline && myeconfargs+=( --without-termcap-library )
-
- export ac_cv_path_PYTHON="${PYTHON}"
-
- econf "${myeconfargs[@]}"
-}
-
-src_install() {
- default
- make_session_desktop fvwm /usr/bin/fvwm
-
- if ! use lock; then
- find "${D}" -name '*fvwm-menu-xlock' -exec rm -f '{}' \; 2>/dev/null
- fi
-
- if use perl; then
- if ! use tk; then
- rm "${D}"/usr/share/fvwm/perllib/FVWM/Module/Tk.pm || die
- rm "${D}"/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm || die
- find "${D}"/usr/share/fvwm/perllib -depth -type d -exec rmdir '{}' \; 2>/dev/null
- fi
- else
- # Completely wipe it if ! use perl
- rm -r "${D}"/usr/bin/fvwm-perllib "${D}"/usr/share/man/man1/fvwm-perllib.1
- fi
-
- # Utility for testing FVWM behaviour by creating a simple window with
- # configurable hints.
- if use debug; then
- dobin "${S}"/tests/hints/hints_test
- newdoc "${S}"/tests/hints/README README.hints
- fi
-
- dodir /etc/X11/Sessions
- echo "/usr/bin/fvwm" > "${D}"/etc/X11/Sessions/${PN} || die
- fperms a+x /etc/X11/Sessions/${PN}
-
- dodoc docs/{COMMANDS,DEVELOPERS.md}
-
- # README file for translucent menus patch.
- if ! use vanilla; then
- dodoc "${FILESDIR}"/README.translucency
- ewarn "You are using a patched build, so, please, don't"
- ewarn "report bugs at the fvwm-workers list unless you are"
- ewarn "also able to reproduce them with a vanilla build (USE=vanilla)."
- fi
-}