diff options
Diffstat (limited to 'x11-wm/fvwm/files')
-rw-r--r-- | x11-wm/fvwm/files/README.translucency | 94 | ||||
-rw-r--r-- | x11-wm/fvwm/files/fvwm-2.7.0-ar.patch | 41 | ||||
-rw-r--r-- | x11-wm/fvwm/files/fvwm-2.7.0-c99.patch | 99 | ||||
-rw-r--r-- | x11-wm/fvwm/files/fvwm-2.7.0-clang16.patch | 54 | ||||
-rw-r--r-- | x11-wm/fvwm/files/fvwm-2.7.0-fix-docdir.patch | 13 | ||||
-rw-r--r-- | x11-wm/fvwm/files/fvwm-2.7.0-translucent-menus.diff | 507 |
6 files changed, 0 insertions, 808 deletions
diff --git a/x11-wm/fvwm/files/README.translucency b/x11-wm/fvwm/files/README.translucency deleted file mode 100644 index a60b5f6..0000000 --- a/x11-wm/fvwm/files/README.translucency +++ /dev/null @@ -1,94 +0,0 @@ -From owner-fvwm@hpc.uh.edu 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 <fvwm@hpc.uh.edu>; 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 <fvwm@hpc.uh.edu>; 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 fvwm@hpc.uh.edu; 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 <fvwm@hpc.uh.edu>; 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 fvwm@fvwm.org; 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 <fvwm@fvwm.org>; 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 <olivier.chapuis@free.fr> -To: fvwm@fvwm.org -Subject: Re: FVWM: Transparency/Translucency revisited... -Message-ID: <20030831203919.GA6205@snoopy.folie> -Mail-Followup-To: fvwm@fvwm.org -References: <Pine.LNX.4.44.0308251817370.1980-100000@atlantis.ssw.krakow.pl> -Mime-Version: 1.0 -Content-Type: multipart/mixed; boundary="Nq2Wo0NMKNjxTN9z" -Content-Disposition: inline -In-Reply-To: <Pine.LNX.4.44.0308251817370.1980-100000@atlantis.ssw.krakow.pl> -User-Agent: Mutt/1.4i -X-Spam-Score: -9.3 (---------) -Sender: owner-fvwm@hpc.uh.edu -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 majordomo@fvwm.org. -To report problems, send mail to fvwm-owner@fvwm.org. - 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 80ceca3..0000000 --- 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 7bc137d..0000000 --- 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 <fweimer@redhat.com> -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 <fweimer@redhat.com> -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 <fweimer@redhat.com> -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-clang16.patch b/x11-wm/fvwm/files/fvwm-2.7.0-clang16.patch deleted file mode 100644 index 025c6e6..0000000 --- a/x11-wm/fvwm/files/fvwm-2.7.0-clang16.patch +++ /dev/null @@ -1,54 +0,0 @@ -https://github.com/fvwmorg/fvwm/pull/100 - -From 0b4daddf6b88b696daf54714448b8d89a615abf2 Mon Sep 17 00:00:00 2001 -From: Florian Weimer <fweimer@redhat.com> -Date: Thu, 24 Nov 2022 13:06:50 +0100 -Subject: [PATCH 1/2] 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. ---- 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) ---- 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 <fweimer@redhat.com> -Date: Thu, 24 Nov 2022 13:07:56 +0100 -Subject: [PATCH 2/2] 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). ---- 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]; - 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 b1f5a1d..0000000 --- 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 67f0a3b..0000000 --- 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, |