From: Nick Bowler Date: Wed, 3 Feb 2021 04:54:34 +0000 (-0500) Subject: x11-wm/fvwm: fixed prefix and man page installation. X-Git-Url: https://git.draconx.ca/gitweb/gentoo-fixes.git/commitdiff_plain/2609aa0189016b1d51bd0f08a2b041fe15429922 x11-wm/fvwm: fixed prefix and man page installation. --- diff --git a/x11-wm/fvwm/Manifest b/x11-wm/fvwm/Manifest new file mode 100644 index 0000000..3606e76 --- /dev/null +++ b/x11-wm/fvwm/Manifest @@ -0,0 +1,10 @@ +AUX README.translucency 3723 BLAKE2B aae37e9dbdf8f7b730b6947d55f0e286c1269d5cacc9ce6d2481562b054c2fa9010acf6ee0d6c994ea3cee64d3df99ef6d08dfa8c6b58706bc9bb8b477095e1b SHA512 a64ef5147e52e07d4cec8a2f3ebd1340827d0139031ef7ddaf27fc144fcc58858c3ec40eee854034423f853b2c7bdd813f66236c8a9679977084f4a2176a8ffa +AUX fvwm-2.5.27-translucent-menus.diff 15765 BLAKE2B 85623d5d671d97842ffe819ddfa1045b91ef76101ccf8cc6fdf4854c1675b397715977efafb174e340c487bafed12677a1cacb83e201424a9fed43bdfa7f8475 SHA512 92f78b624ea2bfddb88f825f40930a0a7e4bb1d284276e62985f189cd5b72ee8a92131f7d2a91efdbf508fc8ef002f5b4168188b12b0e23e28fb1ebec471969d +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.6.9-bundled-manpage.patch 340 BLAKE2B 5a63e18490342637ce1e692333db2faa19a175ab27516f02374cd29dff030b52e906e52d6eb0bd2914cd7105caf0c23ccc73a2cd0b743efec157e9db8bda5ad0 SHA512 de4cc81da91416f4183f61ec205b91650336d532194ea285298ea629610a1567bb1f6a6f95eda4003e247a110d3d2f2d5236cdfa795c636715f03813a0e1f9db +AUX fvwm-2.6.9-respect-docdir.patch 455 BLAKE2B d4272d43e010a8a4456965033dff2c88a9965c6fa2c89040fa49855cd8fb7e84bf6a1fdb634359ac9f667501b29a23bf8dc052107119f53f5b9468eac2d43498 SHA512 ff17efd2f1c5e2e252ce78d6647617430582f5dad946ef6672f2893fbc383991d93725709631df671c9f10546d8f3d7fe7c634fadebfac70f1d63cc1c9f1df99 +AUX fvwm-2.6.9-respect-htmldir.patch 655 BLAKE2B 3199958847a2dee691fdecc3148f630ff4c13c74845053bf4e3d566712ef6791c34a02d091c8d2966458b19ef5f1ff16b25ed7eb93cbea2ab2ee026ae177a6e0 SHA512 a20b734342d2bd6dc3e1392852dc7fc20c0f1aaa0f7aa494f0da988c41b2f6f0d8cee8811de5d56afe67715d84fa72a072ffae1206f56425ab3c9763d9ce7fdc +DIST fvwm-2.6.9.tar.gz 3942859 BLAKE2B 8faf2d420d96049ab0528a6c6a5dc6ed8ee9449f8e533b9ad9bb526faea86030684fc0aa8ed0d307cb64575457676611298adf582b1249c37a3db35a72b43bf1 SHA512 a9c2214ad19edd17da81446a6d4250284cc50b59b53c233212f2a9354c01143dbb870521392752f272f00af50bee2dd8f0b6bf6176b0d4b3075694d2a61a623e +EBUILD fvwm-2.6.9.ebuild 4673 BLAKE2B 470385ab61dbadc9f7f2bea1f561e77e67ab4333912857f77f59f21d2ca38f4d7d447f686ddeece1576b7e5895fdce906ae55173ec87515e6a9e4891f2ce5f05 SHA512 c065d284de98f0521447804c88a0c1a88bdf731f72a5f6295e02c8e809675ae3ecd7aa0c7e4fd98b0766de66f40d455927d20a5f5477adafc23b4e8972f01ca7 diff --git a/x11-wm/fvwm/files/README.translucency b/x11-wm/fvwm/files/README.translucency new file mode 100644 index 0000000..a60b5f6 --- /dev/null +++ b/x11-wm/fvwm/files/README.translucency @@ -0,0 +1,94 @@ +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 ; 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 ; 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 ; 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 ; 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 +To: fvwm@fvwm.org +Subject: Re: FVWM: Transparency/Translucency revisited... +Message-ID: <20030831203919.GA6205@snoopy.folie> +Mail-Followup-To: fvwm@fvwm.org +References: +Mime-Version: 1.0 +Content-Type: multipart/mixed; boundary="Nq2Wo0NMKNjxTN9z" +Content-Disposition: inline +In-Reply-To: +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 + + + +-- +Visit the official FVWM web page at . +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.5.27-translucent-menus.diff b/x11-wm/fvwm/files/fvwm-2.5.27-translucent-menus.diff new file mode 100644 index 0000000..1c49f69 --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.5.27-translucent-menus.diff @@ -0,0 +1,528 @@ +Index: fvwm/colorset.c +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/fvwm/colorset.c,v +retrieving revision 1.52 +diff -u -r1.52 colorset.c +--- fvwm/colorset.c 27 Jan 2007 11:33:15 -0000 1.52 ++++ fvwm/colorset.c 5 Feb 2007 19:15:51 -0000 +@@ -164,6 +164,8 @@ + "NoIconTint", + "IconAlpha", + ++ "Translucent", ++ "NoTranslucent", + NULL + }; + +@@ -625,6 +627,7 @@ + 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 @@ + 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; +@@ -763,6 +767,10 @@ + 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; +@@ -929,6 +937,24 @@ + 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")) +@@ -1615,6 +1641,27 @@ + } + + /* ++ * ---------- 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 ---------- + */ + /* make sure the server has this to avoid races */ +@@ -1710,6 +1757,7 @@ + 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, +@@ -1727,6 +1775,7 @@ + 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 */ +@@ -1738,6 +1787,7 @@ + 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++; +Index: fvwm/menuroot.h +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/fvwm/menuroot.h,v +retrieving revision 1.3 +diff -u -r1.3 menuroot.h +--- fvwm/menuroot.h 13 Jan 2007 15:07:14 -0000 1.3 ++++ fvwm/menuroot.h 5 Feb 2007 19:17:37 -0000 +@@ -146,6 +146,9 @@ + 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 */ +Index: fvwm/menus.c +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/fvwm/menus.c,v +retrieving revision 1.409 +diff -u -r1.409 menus.c +--- fvwm/menus.c 27 Jan 2007 11:51:15 -0000 1.409 ++++ fvwm/menus.c 5 Feb 2007 19:17:50 -0000 +@@ -75,6 +75,19 @@ + + /* ---------------------------- local macros ------------------------------- */ + ++#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. */ +@@ -188,6 +201,8 @@ + } mloop_static_info_t; + + /* ---------------------------- forward declarations ----------------------- */ ++static MenuRoot *seek_submenu_instance( ++ MenuRoot *parent_menu, MenuItem *parent_item); + + /* ---------------------------- local variables ---------------------------- */ + +@@ -353,12 +368,22 @@ + 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), +@@ -1779,6 +1804,7 @@ + /* Doh. Use the standard display instead. */ + MR_CREATE_DPY(mr) = dpy; + } ++ MR_IS_TEAR_OFF_MENU(mr) = 1; + } + else + { +@@ -2594,7 +2620,37 @@ + } + 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) + { +@@ -3401,10 +3457,7 @@ + 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( +@@ -3583,10 +3636,21 @@ + */ + + 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)++; +@@ -6123,16 +6187,122 @@ + { + 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); ++ } + } + + +@@ -6173,10 +6343,7 @@ + } + 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)) +@@ -6813,10 +6980,12 @@ + 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) || +Index: fvwm/menus.h +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/fvwm/menus.h,v +retrieving revision 1.111 +diff -u -r1.111 menus.h +--- fvwm/menus.h 27 Jan 2007 11:51:15 -0000 1.111 ++++ fvwm/menus.h 5 Feb 2007 19:17:50 -0000 +@@ -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; +Index: libs/Colorset.h +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/libs/Colorset.h,v +retrieving revision 1.38 +diff -u -r1.38 Colorset.h +--- libs/Colorset.h 10 Jan 2007 00:34:27 -0000 1.38 ++++ libs/Colorset.h 5 Feb 2007 19:19:00 -0000 +@@ -51,6 +51,10 @@ + 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 @@ + #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 @@ + (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) + */ +Index: libs/PictureGraphics.c +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/libs/PictureGraphics.c,v +retrieving revision 1.29 +diff -u -r1.29 PictureGraphics.c +--- libs/PictureGraphics.c 27 Jan 2007 11:33:16 -0000 1.29 ++++ libs/PictureGraphics.c 5 Feb 2007 19:19:49 -0000 +@@ -1340,7 +1340,7 @@ + } + } + +-#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) +Index: libs/PictureGraphics.h +=================================================================== +RCS file: /home/cvs/fvwm/fvwm/libs/PictureGraphics.h,v +retrieving revision 1.13 +diff -u -r1.13 PictureGraphics.h +--- libs/PictureGraphics.h 9 May 2006 20:46:29 -0000 1.13 ++++ libs/PictureGraphics.h 5 Feb 2007 19:19:49 -0000 +@@ -122,7 +122,9 @@ + 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/files/fvwm-2.6.5-ar.patch b/x11-wm/fvwm/files/fvwm-2.6.5-ar.patch new file mode 100644 index 0000000..b1d6200 --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.6.5-ar.patch @@ -0,0 +1,35 @@ +--- configure.ac 2012-04-20 12:58:29.000000000 +0200 ++++ configure_new.ac 2013-07-21 18:26:17.513904607 +0200 +@@ -209,6 +209,10 @@ + # 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 +--- libs/Makefile.in 2012-04-20 13:03:55.000000000 +0200 ++++ libs/Makefile_new.in 2013-07-21 18:27:17.443992505 +0200 +@@ -48,7 +48,7 @@ + CONFIG_CLEAN_FILES = + CONFIG_CLEAN_VPATH_FILES = + LIBRARIES = $(noinst_LIBRARIES) +-AR = ar ++AR = @AR@ + ARFLAGS = cru + libfvwm_a_AR = $(AR) $(ARFLAGS) + libfvwm_a_DEPENDENCIES = @LIBOBJS@ @ALLOCA@ +--- modules/FvwmScript/Widgets/Makefile.in 2012-04-20 13:03:56.000000000 +0200 ++++ modules/FvwmScript/Widgets/Makefile_new.in 2013-07-21 18:27:23.844001892 +0200 +@@ -46,7 +46,7 @@ + CONFIG_CLEAN_FILES = + CONFIG_CLEAN_VPATH_FILES = + LIBRARIES = $(noinst_LIBRARIES) +-AR = ar ++AR = @AR@ + ARFLAGS = cru + libWidgets_a_AR = $(AR) $(ARFLAGS) + libWidgets_a_LIBADD = diff --git a/x11-wm/fvwm/files/fvwm-2.6.5-mouse-buttons.patch b/x11-wm/fvwm/files/fvwm-2.6.5-mouse-buttons.patch new file mode 100644 index 0000000..7eaa3e2 --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.6.5-mouse-buttons.patch @@ -0,0 +1,11 @@ +--- libs/defaults.h 2011-08-15 18:25:40.000000000 +0200 ++++ libs/defaults.h 2012-04-12 21:13:47.000000000 +0200 +@@ -25,7 +25,7 @@ + /* The "extended" buttons do not provide the full functionality because X has + * no bit mask value for them. Things like dragging windows don't work with + * them. */ +-#define NUMBER_OF_EXTENDED_MOUSE_BUTTONS 9 ++#define NUMBER_OF_EXTENDED_MOUSE_BUTTONS 15 + #if NUMBER_OF_EXTENDED_MOUSE_BUTTONS > 31 + #error No more than 31 mouse buttons can be supported on 32 bit platforms + #endif diff --git a/x11-wm/fvwm/files/fvwm-2.6.8-perl528.patch b/x11-wm/fvwm/files/fvwm-2.6.8-perl528.patch new file mode 100644 index 0000000..5735fb1 --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.6.8-perl528.patch @@ -0,0 +1,15 @@ +--- modules/FvwmPerl/FvwmPerl.in 2018-04-28 07:46:28.000000000 -0400 ++++ modules/FvwmPerl/FvwmPerl.in 2019-01-06 20:44:59.035950968 -0500 +@@ -319,11 +319,11 @@ + $FVWM_DATADIR = $FVWM_DATADIR || $module->site_data_dir; + $FVWM_USERDIR = $FVWM_USERDIR || $module->user_data_dir; + } + + # perl code substitution first +- $$text_ref =~ s/\Q$quote1\E { ( .*? ) } \Q$quote2\E/ ++ $$text_ref =~ s/\Q$quote1\E \{ ( .*? ) \} \Q$quote2\E/ + my $result = eval " + no strict; + package PreprocessNamespace; + $1 + "; diff --git a/x11-wm/fvwm/files/fvwm-2.6.9-bundled-manpage.patch b/x11-wm/fvwm/files/fvwm-2.6.9-bundled-manpage.patch new file mode 100644 index 0000000..524a61c --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.6.9-bundled-manpage.patch @@ -0,0 +1,15 @@ +diff --git a/doc/Makefile.am b/doc/Makefile.am +index 94766de..f6fb084 100644 +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -12,10 +12,6 @@ html_DATA = \ + $(HTML_FILES) + endif + +-if FVWM_BUILD_MANDOC + SUBDIRS = commands images docbook-xml docbook-xsl fvwm +-else +-SUBDIRS = commands images docbook-xml docbook-xsl +-endif + + all: $(doc_DATA) diff --git a/x11-wm/fvwm/files/fvwm-2.6.9-respect-docdir.patch b/x11-wm/fvwm/files/fvwm-2.6.9-respect-docdir.patch new file mode 100644 index 0000000..c8c8a7a --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.6.9-respect-docdir.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index 6ed1846..ee44727 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -113,7 +113,7 @@ AC_ARG_ENABLE(package-subdirs, + + FVWM_MODULEDIR='${libexecdir}'"$FVWM_MODULESUBDIR" + FVWM_DATADIR='${datadir}'"$FVWM_DATASUBDIR" +-FVWM_DOCDIR='${datadir}'"$FVWM_DOCSUBDIR" ++FVWM_DOCDIR=$docdir + FVWM_PERLLIBDIR='${datadir}'"$FVWM_DATASUBDIR/perllib" + FVWM_CONFDIR='${sysconfdir}'dnl used _only_ to search for system.fvwm2rc + diff --git a/x11-wm/fvwm/files/fvwm-2.6.9-respect-htmldir.patch b/x11-wm/fvwm/files/fvwm-2.6.9-respect-htmldir.patch new file mode 100644 index 0000000..b9601d7 --- /dev/null +++ b/x11-wm/fvwm/files/fvwm-2.6.9-respect-htmldir.patch @@ -0,0 +1,26 @@ +diff --git a/doc/Makefile.am b/doc/Makefile.am +index 2ba8c08..94766de 100644 +--- a/doc/Makefile.am ++++ b/doc/Makefile.am +@@ -8,7 +8,7 @@ EXTRA_DIST = \ + fvwm.xsl fvwm-man.xsl header.html $(HTML_FILES) + + if FVWM_BUILD_HTMLDOC +-doc_DATA = \ ++html_DATA = \ + $(HTML_FILES) + endif + +diff --git a/doc/fvwm/Makefile.am b/doc/fvwm/Makefile.am +index a0f71c6..374d7ef 100755 +--- a/doc/fvwm/Makefile.am ++++ b/doc/fvwm/Makefile.am +@@ -13,7 +13,7 @@ EXTRA_DIST = @DOC_SECTIONS_XML@ $(man_MANS) sections + man_MANS = fvwm.1 + + if FVWM_BUILD_HTMLDOC +-doc_DATA = $(HTML_FILES) ++html_DATA = $(HTML_FILES) + BUILD_HTML_FILES = $(HTML_FILES) + else + BUILD_HTML_FILES = diff --git a/x11-wm/fvwm/fvwm-2.6.9.ebuild b/x11-wm/fvwm/fvwm-2.6.9.ebuild new file mode 100644 index 0000000..2f03c11 --- /dev/null +++ b/x11-wm/fvwm/fvwm-2.6.9.ebuild @@ -0,0 +1,172 @@ +# Copyright © 2021 Nick Bowler +# License GPLv2+: GNU General Public License version 2 or any later version. +# This is free software: you are free to change and redistribute it. +# There is NO WARRANTY, to the extent permitted by law. +# +# This is a modified version of the original ebuild from Gentoo GNU/Linux, +# covered by the following copyright and permission notice: +# +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 +inherit autotools flag-o-matic desktop + +DESCRIPTION="An extremely powerful ICCCM-compliant multiple virtual desktop window manager" +HOMEPAGE="http://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 ~sparc x86" +IUSE="bidi debug doc netpbm nls perl png readline rplay stroke svg tk truetype +vanilla xinerama lock" + +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 + 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} + dev-lang/perl + perl? ( tk? ( + dev-lang/tk + dev-perl/Tk + >=dev-perl/X11-Protocol-0.56 + ) + ) + rplay? ( media-sound/rplay ) + lock? ( x11-misc/xlockmore ) + userland_GNU? ( sys-apps/debianutils ) + !x86-fbsd? ( netpbm? ( media-libs/netpbm ) ) +" +DEPEND="${COMMON_DEPEND} + virtual/pkgconfig + x11-base/xorg-proto + doc? ( dev-libs/libxslt ) +" + +PATCHES=( + "$FILESDIR/$PN-2.6.9-respect-docdir.patch" + "$FILESDIR/$PN-2.6.9-respect-htmldir.patch" + "$FILESDIR/$PN-2.6.9-bundled-manpage.patch" +) + +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 + + # Fix for Perl 5.28 + eapply -p0 "${FILESDIR}/${PN}-2.6.8-perl528.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 + $(use_enable bidi) + $(use_enable debug debug-msgs) + $(use_enable debug command-log) + $(use_enable doc htmldoc) + $(use_enable doc mandoc) + $(use_enable nls) + $(use_enable perl perllib) + $(use_enable png) + $(use_with readline readline-library) + $(use_with rplay rplay-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 ) + + econf "${myeconfargs[@]}" +} + +src_install() { + default + make_session_desktop fvwm /usr/bin/fvwm + + if ! use lock; then + find "${ED}" -name '*fvwm-menu-xlock' -exec rm -f '{}' \; 2>/dev/null + 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 '{}' \; 2>/dev/null + fi + else + # Completely wipe it if ! use perl + rm -r "${ED}"/usr/bin/fvwm-perllib "${ED}"/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 "${EPREFIX%/}/usr/bin/fvwm" > "${ED}"/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 +}