commit:     f33bf915c17690bbdcf93b56642df49bc0f3becf
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Mon Jun  2 16:45:28 2025 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Mon Jun  2 16:45:28 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f33bf915

x11-wm/fvwm: treeclean

Closes: https://bugs.gentoo.org/949035 (pkgremoved)
Closes: https://bugs.gentoo.org/921601 (pkgremoved)
Closes: https://bugs.gentoo.org/954802 (pkgremoved)
Closes: https://bugs.gentoo.org/954801 (pkgremoved)
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 profiles/package.mask                              |   7 -
 x11-wm/fvwm/Manifest                               |   1 -
 x11-wm/fvwm/files/README.translucency              |  94 ----
 x11-wm/fvwm/files/fvwm-2.7.0-ar.patch              |  41 --
 x11-wm/fvwm/files/fvwm-2.7.0-c99.patch             |  99 ----
 x11-wm/fvwm/files/fvwm-2.7.0-fix-docdir.patch      |  13 -
 .../fvwm/files/fvwm-2.7.0-translucent-menus.diff   | 507 ---------------------
 x11-wm/fvwm/fvwm-2.7.0-r5.ebuild                   | 172 -------
 x11-wm/fvwm/metadata.xml                           |  19 -
 9 files changed, 953 deletions(-)

diff --git a/profiles/package.mask b/profiles/package.mask
index 6b824bec322a..e8c29f2f8a32 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -226,13 +226,6 @@ dev-libs/libxml2-compat
 =dev-python/ensurepip-setuptools-80.3.0
 =dev-python/setuptools-80.3.0
 
-# Matt Jolly <[email protected]> (2025-04-28)
-# Unmaintained in Gentoo, is not supported upstream,
-# and has a modern successor that does not bring in additional dependencies.
-# Migrate to x11-wm/fvwm3: https://github.com/fvwmorg/fvwm3/discussions/878
-# Bug #949035; removal on 2025-05-28.
-x11-wm/fvwm
-
 # Michał Górny <[email protected]> (2025-04-22)
 # Metapackage used for pypy3 target in the past.
 # Removal on 2025-05-22.

diff --git a/x11-wm/fvwm/Manifest b/x11-wm/fvwm/Manifest
deleted file mode 100644
index 53a96bc2ff82..000000000000
--- a/x11-wm/fvwm/Manifest
+++ /dev/null
@@ -1 +0,0 @@
-DIST fvwm-2.7.0.tar.gz 3933529 BLAKE2B 
b4be7083c2946cb2a0c48673271d490a49aba5aec8407169bedc5a35f55fe8cd2724a9f6570c5e7ea110652c04956570c874256f96fa5d920a2a1ede152c0c25
 SHA512 
fc9076c3f07f36b0b2c7c4d2bdf7bb1a711000e39316e327173548bc99dc2b8a29b591e3644e1492f87603b576cd4a3f58ecbdd84a4384d294417b3c56c81808

diff --git a/x11-wm/fvwm/files/README.translucency 
b/x11-wm/fvwm/files/README.translucency
deleted file mode 100644
index a60b5f668acd..000000000000
--- a/x11-wm/fvwm/files/README.translucency
+++ /dev/null
@@ -1,94 +0,0 @@
-From [email protected]  Sun Aug 31 22:52:59 2003
-Received: from sina.hpc.uh.edu ([129.7.128.10] ident=lists)
-       by malifon.math.uh.edu with esmtp (Exim 3.20 #1)
-       id 19tb0F-0006NY-00; Sun, 31 Aug 2003 17:48:59 -0500
-Received: by sina.hpc.uh.edu (TLB v0.09a (1.20 tibbs 1996/10/09 22:03:07)); 
Sun, 31 Aug 2003 17:50:31 -0500 (CDT)
-Received: from epithumia.math.uh.edu (epithumia.math.uh.edu [129.7.128.2])
-       by sina.hpc.uh.edu (8.9.3/8.9.3) with ESMTP id RAA16575
-       for <[email protected]>; Sun, 31 Aug 2003 17:50:24 -0500 (CDT)
-Received: from epithumia.math.uh.edu (epithumia.math.uh.edu [127.0.0.1])
-       by epithumia.math.uh.edu (8.12.8/8.12.5) with ESMTP id h7VMml6M025095
-       for <[email protected]>; Sun, 31 Aug 2003 17:48:47 -0500
-Received: (from tibbs@localhost)
-       by epithumia.math.uh.edu (8.12.8/8.12.8/Submit) id h7VMmlVC025093
-       for [email protected]; Sun, 31 Aug 2003 17:48:47 -0500
-Received: from util2.math.uh.edu (util2.math.uh.edu [129.7.128.23])
-       by sina.hpc.uh.edu (8.9.3/8.9.3) with ESMTP id QAA16418
-       for <[email protected]>; Sun, 31 Aug 2003 16:02:07 -0500 (CDT)
-Received: from postfix4-2.free.fr ([213.228.0.176])
-       by util2.math.uh.edu with esmtp (Exim 4.20)
-       id 19tZIm-00079F-6t
-       for [email protected]; Sun, 31 Aug 2003 16:00:00 -0500
-Received: from snoopy.folie (nas-p19-3-62-147-221-172.dial.proxad.net 
[62.147.221.172])
-       by postfix4-2.free.fr (Postfix) with ESMTP id 59DE6C386
-       for <[email protected]>; Sun, 31 Aug 2003 22:59:34 +0200 (CEST)
-Received: by snoopy.folie (Postfix, from userid 501)
-       id A4D1D48784; Sun, 31 Aug 2003 22:39:19 +0200 (CEST)
-Date: Sun, 31 Aug 2003 22:39:19 +0200
-From: Olivier Chapuis <[email protected]>
-To: [email protected]
-Subject: Re: FVWM: Transparency/Translucency revisited...
-Message-ID: <[email protected]>
-Mail-Followup-To: [email protected]
-References: <[email protected]>
-Mime-Version: 1.0
-Content-Type: multipart/mixed; boundary="Nq2Wo0NMKNjxTN9z"
-Content-Disposition: inline
-In-Reply-To: <[email protected]>
-User-Agent: Mutt/1.4i
-X-Spam-Score: -9.3 (---------)
-Sender: [email protected]
-Precedence: list
-X-Majordomo: 1.94.jlt7
-Status: RO
-Content-Length: 6519
-Lines: 122
-
-
---Nq2Wo0NMKNjxTN9z
-Content-Type: text/plain; charset=us-ascii
-Content-Disposition: inline
-
-On Mon, Aug 25, 2003 at 09:00:32PM +0200, Dawid Kuroczko wrote:
-> Hello. :-)
-> 
-> I did manage to make pseudo-transparent menus, but now I'd like
-> to make something more "real".  What I'd like to do is to have
-> something like there is in KDE.
-> 
-> It should work like this:
->  1. user clicks thus calling a Menu.
->  2. current screen dump is taken (with all the windows, but
->     without a menu just as yet).
->  3. this screen dump is made available to Menu as
->     root background pixmap.
->  4. Menu is displayed with tinted real background.
-> 
-> This way it's pretty easy to make an illusion of real
-> transparency (and looks "l33t", as some may say).
->
-
-Here a new version of the patch for current cvs/snapshot.
-This patch add a new options to Colorset: Translucent/NoTranslucent.
-These options has effects only with (non tear-off) menu.
-Also menu animation is "handled".
-
-For example with:
-
-  Colorset 5 fg yellow, bg blue, HGradient 200 lightblue darkblue, \
-         Translucent blue 60
-  Style * MenuColorset 5, PopupOffset 0 100, AnimationOff
-
-you get translucent menus (with a 60% blue tint) and if you tear-off
-a menu the menu use the gradient.
-
-Regards, Olivier
-
-<snip patch>
-
---
-Visit the official FVWM web page at <URL: http://www.fvwm.org/>.
-To unsubscribe from the list, send "unsubscribe fvwm" in the body of a
-message to [email protected].
-To report problems, send mail to [email protected].
-

diff --git a/x11-wm/fvwm/files/fvwm-2.7.0-ar.patch 
b/x11-wm/fvwm/files/fvwm-2.7.0-ar.patch
deleted file mode 100644
index 80ceca36f3b2..000000000000
--- a/x11-wm/fvwm/files/fvwm-2.7.0-ar.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-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-c99.patch 
b/x11-wm/fvwm/files/fvwm-2.7.0-c99.patch
deleted file mode 100644
index 7bc137dc6cc2..000000000000
--- a/x11-wm/fvwm/files/fvwm-2.7.0-c99.patch
+++ /dev/null
@@ -1,99 +0,0 @@
-https://github.com/fvwmorg/fvwm/pull/100
-
-From 0b4daddf6b88b696daf54714448b8d89a615abf2 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <[email protected]>
-Date: Thu, 24 Nov 2022 13:06:50 +0100
-Subject: [PATCH 1/3] configure: Do not require support for implicit ints
-
-Implicit ints  have not been part of C since 1999, and future
-compilers will disable support for them by default.  Fortunatenly,
-only one configure check needs adjusting.
----
- acinclude.m4 | 2 +-
- configure.ac | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index 8b74ff1e5..b66042f9f 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -30,7 +30,7 @@ if test "$ac_cv_func_select" = yes; then
- #ifdef HAVE_SYS_SOCKET_H
- #include <sys/socket.h>
- #endif],
--[extern select ($ac_cv_type_fd_set_size_t,
-+[extern int select ($ac_cv_type_fd_set_size_t,
-  $ac_cv_type_fd_set *,        $ac_cv_type_fd_set *, $ac_cv_type_fd_set *,
-  $ac_type_timeval *);],
- [ac_found=yes ; break 3],ac_found=no)
-diff --git a/configure.ac b/configure.ac
-index 97ab9e7a1..c9fcede6a 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -220,7 +220,7 @@ AC_MINIX
- 
- # catch -Werror and similar options when running configure
- AC_TRY_COMPILE([#include <stdio.h>],
--[int i; static j; int *p; char *c;
-+[int i; int *p; char *c;
-   switch (*p = p = *c) { case 0: printf("%Q", c, p); }
-   *c = &i; c = p;
-   while (1 || (unsigned int)3 >= 0 || ((int)-1) == ((unsigned int)1));
-
-From 6b9d100ae4e784821b5189474dc58e646417bcf6 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <[email protected]>
-Date: Thu, 24 Nov 2022 13:07:56 +0100
-Subject: [PATCH 2/3] acinclude.m4: Add missing <unistd.h> to
- AM_SAFETY_CHECK_MKSTEMP
-
-Otherwise, the check fails on a compiler which does not support
-implicit function declarations (a language feature removed in 1999).
----
- acinclude.m4 | 3 +++
- 1 file changed, 3 insertions(+)
-
-diff --git a/acinclude.m4 b/acinclude.m4
-index b66042f9f..4dee2abeb 100644
---- a/acinclude.m4
-+++ b/acinclude.m4
-@@ -1154,6 +1154,9 @@ AC_DEFUN([AM_SAFETY_CHECK_MKSTEMP],[
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-+#ifdef HAVE_UNISTD_H
-+#include <unistd.h>
-+#endif
- int main(void)
- {
-   char template[128];
-
-From 33537b8ae5a302e4016dc1c6cfe5577fb3fa36c9 Mon Sep 17 00:00:00 2001
-From: Florian Weimer <[email protected]>
-Date: Tue, 19 Dec 2023 13:24:50 +0100
-Subject: [PATCH 3/3] configure: Further defang the -Werror check
-
-Incompatible pointer types are actually errors (in the sense
-that they are invalid C).  Compilers have merely tolerated them as
-warnings for backwards compatibility.  This is changing with Clang 16
-and GCC 14, so relax the check a little.
----
- configure.ac | 5 ++---
- 1 file changed, 2 insertions(+), 3 deletions(-)
-
-diff --git a/configure.ac b/configure.ac
-index c9fcede6a..2e9615b2b 100644
---- a/configure.ac
-+++ b/configure.ac
-@@ -220,9 +220,8 @@ AC_MINIX
- 
- # catch -Werror and similar options when running configure
- AC_TRY_COMPILE([#include <stdio.h>],
--[int i; int *p; char *c;
--  switch (*p = p = *c) { case 0: printf("%Q", c, p); }
--  *c = &i; c = p;
-+[int unused; int *p; char *c;
-+  printf("%Q", c, p);
-   while (1 || (unsigned int)3 >= 0 || ((int)-1) == ((unsigned int)1));
- ], , AC_MSG_ERROR("
- configure is not able to compile programs with warnings.  Please
-

diff --git a/x11-wm/fvwm/files/fvwm-2.7.0-fix-docdir.patch 
b/x11-wm/fvwm/files/fvwm-2.7.0-fix-docdir.patch
deleted file mode 100644
index b1f5a1db7ea2..000000000000
--- a/x11-wm/fvwm/files/fvwm-2.7.0-fix-docdir.patch
+++ /dev/null
@@ -1,13 +0,0 @@
-https://bugs.gentoo.org/927863
-
---- a/configure.ac
-+++ b/configure.ac
-@@ -102,7 +102,7 @@
- PPACKAGE=`echo "${PACKAGE}" | "$SED" -e "${transform}"`
- FVWM_MODULESUBDIR=/${PPACKAGE}/${VERSION}
- FVWM_DATASUBDIR=/${PPACKAGE}
--FVWM_DOCSUBDIR=/doc/${PPACKAGE}
-+FVWM_DOCSUBDIR=/doc/${PF}
- 
- AC_ARG_ENABLE(package-subdirs,
-   AS_HELP_STRING([--disable-package-subdirs],

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
deleted file mode 100644
index 67f0a3bf0cd5..000000000000
--- a/x11-wm/fvwm/files/fvwm-2.7.0-translucent-menus.diff
+++ /dev/null
@@ -1,507 +0,0 @@
-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-r5.ebuild b/x11-wm/fvwm/fvwm-2.7.0-r5.ebuild
deleted file mode 100644
index 1994050f6fe2..000000000000
--- a/x11-wm/fvwm/fvwm-2.7.0-r5.ebuild
+++ /dev/null
@@ -1,172 +0,0 @@
-# Copyright 1999-2025 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=8
-
-PYTHON_COMPAT=( python3_{10..13} )
-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 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
-       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 "${FILESDIR}/${PN}-2.7.0-translucent-menus.diff"
-       fi
-
-       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
-
-       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="[email protected]"
-
-       # Recommended by upstream, reference ????
-       append-flags -fno-strict-aliasing
-
-       # bug #864959
-       filter-lto
-
-       # 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 "${ED}" -name '*fvwm-menu-xlock' -delete || die
-       fi
-
-       if use perl; then
-               if ! use tk; then
-                       rm "${ED}"/usr/share/fvwm/perllib/FVWM/Module/Tk.pm || 
die
-                       rm 
"${ED}"/usr/share/fvwm/perllib/FVWM/Module/Toolkit.pm || die
-                       find "${ED}"/usr/share/fvwm/perllib -depth -type d 
-exec rmdir '{}' \; || die
-               fi
-       else
-               # Completely wipe it if ! use perl
-               rm -r "${ED}"/usr/bin/fvwm-perllib 
"${ED}"/usr/share/man/man1/fvwm-perllib.1 || die
-       fi
-
-       # Utility for testing FVWM behaviour by creating a simple window with
-       # configurable hints.
-       if use debug; then
-               dobin tests/hints/hints_test
-               newdoc 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/metadata.xml b/x11-wm/fvwm/metadata.xml
deleted file mode 100644
index 30ba2eae7e1d..000000000000
--- a/x11-wm/fvwm/metadata.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd";>
-<pkgmetadata>
-       <!-- maintainer-needed -->
-       <longdescription lang="en">
-               fvwm is an ICCCM-compliant X window manager providing a 3D look 
for
-               window decorations, multiple discontiguous virtual desktops, a 
high
-               degree of configurability, and an external module interface for
-               implementing functional extensions.
-       </longdescription>
-       <use>
-               <flag name="lock">Enable screen locking</flag>
-               <flag name="netpbm">Enable NetPBM support (used by 
FvwmScript-ScreenDump)</flag>
-               <flag name="stroke">Mouse Gesture support</flag>
-       </use>
-       <upstream>
-               <remote-id type="github">fvwmorg/fvwm</remote-id>
-       </upstream>
-</pkgmetadata>

Reply via email to