diff options
author | Matt Jolly <Matt.Jolly@footclan.ninja> | 2023-03-12 15:28:51 +1100 |
---|---|---|
committer | Sam James <sam@gentoo.org> | 2023-03-15 05:04:16 +0000 |
commit | 48a2217b5bc9205569152461cccaac20e20306d5 (patch) | |
tree | 41c665cd35891cdc8241ceed23f96399c7bb1eec /x11-wm | |
parent | net-im/telegram-desktop-bin: drop old (diff) | |
download | gentoo-48a2217b5bc9205569152461cccaac20e20306d5.tar.gz gentoo-48a2217b5bc9205569152461cccaac20e20306d5.tar.bz2 gentoo-48a2217b5bc9205569152461cccaac20e20306d5.zip |
x11-wm/fvwm3: add 1.0.6a, update 9999
- Drop translucent menu patch; after 20 years it was upstreamed!
- Drop htmldoc patch
- Drop vanilla USE; superfluous
Closes: https://bugs.gentoo.org/877487
Closes: https://bugs.gentoo.org/879877
Signed-off-by: Matt Jolly <Matt.Jolly@footclan.ninja>
Closes: https://github.com/gentoo/gentoo/pull/30066
Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'x11-wm')
-rw-r--r-- | x11-wm/fvwm3/Manifest | 1 | ||||
-rw-r--r-- | x11-wm/fvwm3/files/fvwm3-9999-goflags.patch | 11 | ||||
-rw-r--r-- | x11-wm/fvwm3/files/fvwm3-9999-htmldoc.patch | 43 | ||||
-rw-r--r-- | x11-wm/fvwm3/files/fvwm3-9999-translucent-menus.patch | 489 | ||||
-rw-r--r-- | x11-wm/fvwm3/fvwm3-1.0.6a.ebuild | 167 | ||||
-rw-r--r-- | x11-wm/fvwm3/fvwm3-9999.ebuild | 44 | ||||
-rw-r--r-- | x11-wm/fvwm3/metadata.xml | 1 |
7 files changed, 185 insertions, 571 deletions
diff --git a/x11-wm/fvwm3/Manifest b/x11-wm/fvwm3/Manifest index 8fbcc853d95b..3469d010d753 100644 --- a/x11-wm/fvwm3/Manifest +++ b/x11-wm/fvwm3/Manifest @@ -1 +1,2 @@ DIST fvwm3-1.0.4.tar.gz 4691719 BLAKE2B 4ce93b1a2d110b570b5fc8b253f9ff8ea1f44e5470c6e1bc136a53ebe53a23abe3d075bf351fca54ac110ea5731f9b44c59c83186d320e7509bf26e5144436ca SHA512 b72a1ebeba7c55214603fd43ea439f7283b3c79e39d2671a67b9512c67dcea111377eab2131ed0b18a72f6b772b0d048abe08f52565708367465ed9bb14e85f6 +DIST fvwm3-1.0.6a.tar.gz 4538100 BLAKE2B c71087eb09a17760ff5754060c4639228f268a0f3640ce0d92d7d8f807aa0df36eac998da0ed943787f1bb369ac90b7b2ca65d922120d41ed81a940be7756f4f SHA512 7577e0dde1f7c5c54024207cf48ab5b816c87fc163735e44eb72e66561c67c08f6a06e7fbf5c89fa6180b692ce25e5121845476d0d1dcfb8273b0aa7321d28f9 diff --git a/x11-wm/fvwm3/files/fvwm3-9999-goflags.patch b/x11-wm/fvwm3/files/fvwm3-9999-goflags.patch deleted file mode 100644 index fa74f6fb734c..000000000000 --- a/x11-wm/fvwm3/files/fvwm3-9999-goflags.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/bin/FvwmPrompt/Makefile.am -+++ b/bin/FvwmPrompt/Makefile.am -@@ -1,7 +1,7 @@ - if FVWM_BUILD_GOLANG - GOCMD=go - GOBUILD=$(GOCMD) build --GOFLAGS=-ldflags="-s -w" -+GOFLAGS= - GOCLEAN=$(GOCMD) clean - BINARY_NAME=FvwmPrompt - diff --git a/x11-wm/fvwm3/files/fvwm3-9999-htmldoc.patch b/x11-wm/fvwm3/files/fvwm3-9999-htmldoc.patch deleted file mode 100644 index abf6fadc614e..000000000000 --- a/x11-wm/fvwm3/files/fvwm3-9999-htmldoc.patch +++ /dev/null @@ -1,43 +0,0 @@ -This patch enables html documentation in >= 1.0.5 of fvwm3 ---- a/doc/Makefile.am -+++ b/doc/Makefile.am -@@ -13,22 +13,27 @@ EXTRA_DIST = $(MODULE_ADOC) - nothing: - - clean: -- rm -f *.1 *.ad -+ rm -f *.1 *.ad *.html - - distclean-local: clean - - if FVWM_BUILD_MANDOC --man1_MANS = $(patsubst %.adoc,%.1, $(MODULE_ADOC)) -+man1_MANS = $(MODULE_ADOC:.adoc=.1) -+man1_HTML = $(MODULE_ADOC:.adoc=.html) - EXTRACT_SECTIONS = \ - commands \ - menus \ - styles - SECTION_FILES = $(patsubst %,fvwm3_%.ad, $(EXTRACT_SECTIONS)) - --all: docs -+all: docs html -+ - docs: $(man1_MANS) - $(man1_MANS): $(SECTION_FILES) - -+html: $(man1_HTML) -+$(man1_HTML): $(SECTION_FILES) -+ - %.ad: fvwm3_manpage_source.adoc - SECTION=$(patsubst fvwm3_%.ad,%,$@); \ - cat "$<" | \ -@@ -38,4 +43,8 @@ $(man1_MANS): $(SECTION_FILES) - - %.1: %.adoc - "$(ASCIIDOC)" -b manpage -a "$(patsubst %.1,%,$@)" "$<" -o "$@" -+ -+%.html: %.adoc -+ "$(ASCIIDOC)" -b html5 -a "$(patsubst %.html,%,$@)" "$<" -o "$@" -+ - endif diff --git a/x11-wm/fvwm3/files/fvwm3-9999-translucent-menus.patch b/x11-wm/fvwm3/files/fvwm3-9999-translucent-menus.patch deleted file mode 100644 index 43b5b0a14403..000000000000 --- a/x11-wm/fvwm3/files/fvwm3-9999-translucent-menus.patch +++ /dev/null @@ -1,489 +0,0 @@ -This patch enables some additional translucency "stuff", ported from a series of patches in 2003 (see readme) ---- a/fvwm/colorset.c -+++ b/fvwm/colorset.c -@@ -162,6 +162,8 @@ static char *csetopts[] = - "NoIconTint", - "IconAlpha", - -+ "Translucent", -+ "NoTranslucent", - NULL - }; - -@@ -620,6 +622,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; -@@ -632,6 +635,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; -@@ -758,6 +762,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; -@@ -923,6 +931,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")) -@@ -1624,6 +1650,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 ---------- - */ -@@ -1720,6 +1767,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, -@@ -1737,6 +1785,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 */ -@@ -1748,6 +1797,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++; ---- a/fvwm/menuroot.h -+++ b/fvwm/menuroot.h -@@ -147,6 +147,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 */ ---- a/fvwm/menus.c -+++ b/fvwm/menus.c -@@ -76,6 +76,18 @@ - (ctx).menu_root.menu_root = (root)) - #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 ------------------------------------ */ - -@@ -219,6 +231,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 ---------------------------- */ - -@@ -380,12 +394,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)); -+ } -+ } - } - end.x = start.x - MR_XANIMATION(mr); - end.y = start.y; -@@ -1914,6 +1938,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 - { -@@ -2718,7 +2743,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) - { -@@ -3527,10 +3582,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( -@@ -3713,10 +3765,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)++; -@@ -6286,16 +6349,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); -+ } - } - - -@@ -6336,10 +6505,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)) -@@ -6978,7 +7144,10 @@ void UpdateMenuColorset(int cset) - &Colorset[ST_CSET_MENU(ms2)], - 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(ms2) && - ST_CSET_ACTIVE(ms2) == cset) || ---- a/fvwm/menus.h -+++ b/fvwm/menus.h -@@ -19,6 +19,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; ---- a/libs/Colorset.h -+++ b/libs/Colorset.h -@@ -53,6 +53,10 @@ typedef struct Colorset - 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; - -@@ -80,6 +84,7 @@ typedef struct Colorset - #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 */ -@@ -155,6 +160,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) - */ ---- a/libs/PictureGraphics.c -+++ b/libs/PictureGraphics.c -@@ -1361,7 +1361,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) ---- a/libs/PictureGraphics.h -+++ b/libs/PictureGraphics.h -@@ -124,7 +124,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/fvwm3/fvwm3-1.0.6a.ebuild b/x11-wm/fvwm3/fvwm3-1.0.6a.ebuild new file mode 100644 index 000000000000..cc412650d214 --- /dev/null +++ b/x11-wm/fvwm3/fvwm3-1.0.6a.ebuild @@ -0,0 +1,167 @@ +# Copyright 1999-2023 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +PYTHON_COMPAT=( python3_{9..11} ) +GO_OPTIONAL=1 +inherit autotools desktop flag-o-matic go-module python-single-r1 toolchain-funcs + +DESCRIPTION="A multiple large virtual desktop window manager derived from fvwm" +HOMEPAGE="https://www.fvwm.org/" + +if [[ ${PV} == 9999 ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/fvwmorg/fvwm3.git" + EGIT_BRANCH="master" +else + SRC_URI="https://github.com/fvwmorg/fvwm3/releases/download/${PV}/${P}.tar.gz" + KEYWORDS="~amd64 ~riscv" +fi + +LICENSE="GPL-2+ FVWM + go? ( Apache-2.0 BSD MIT )" +SLOT="0" +IUSE="bidi debug doc +go netpbm nls perl readline stroke svg tk lock" +REQUIRED_USE=" + ${PYTHON_REQUIRED_USE}" + +DOCS=( NEWS ) + +if [[ ${PV} == 9999 ]]; then + DOCS+=( + dev-docs/COMMANDS + dev-docs/DEVELOPERS.md + dev-docs/INSTALL.md + dev-docs/PARSING.md + dev-docs/TODO.md + dev-docs/NEW-COMMANDS.md + ) +fi + +BDEPEND=" + virtual/pkgconfig + doc? ( dev-libs/libxslt + dev-ruby/asciidoctor ) + app-arch/unzip + go? ( >=dev-lang/go-1.14 ) +" + +RDEPEND="${PYTHON_DEPS} + ${COMMON_DEPEND} + !x11-wm/fvwm + dev-lang/perl + dev-libs/glib:2 + dev-libs/libevent:= + media-libs/fontconfig + media-libs/libpng:= + sys-apps/debianutils + 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/libXft + x11-libs/libXpm + x11-libs/libXrandr + x11-libs/libXrender + bidi? ( dev-libs/fribidi ) + lock? ( x11-misc/xlockmore ) + netpbm? ( media-libs/netpbm ) + perl? ( tk? ( + dev-lang/tk + dev-perl/Tk + >=dev-perl/X11-Protocol-0.56 + ) + ) + readline? ( + sys-libs/ncurses:= + sys-libs/readline:= + ) + stroke? ( dev-libs/libstroke ) + svg? ( + gnome-base/librsvg:2 + x11-libs/cairo + )" + +DEPEND="${COMMON_DEPEND} + x11-base/xorg-proto" + +src_prepare() { + default + use go && ( sed -e 's/GOFLAGS=-ldflags="-s -w"/GOFLAGS=/' \ + -i bin/FvwmPrompt/Makefile.am || die ) + # Patch configure to allow later go versions + sed -e 's/1.19\*)$/1.19*|1.20*|1.21*)/' -i configure.ac || die + + eautoreconf +} + +src_configure() { + # Non-upstream email where bugs should be sent; used in fvwm-bug. + export FVWM_BUGADDR="desktop-wm@nogentoo.org" + + # Recommended by upstream for release. Doesn't really matter for live ebuilds. + append-flags -fno-strict-aliasing + + # Signed chars are required. + for arch in arm arm64 ppc ppc64; do + use $arch && append-flags -fsigned-chars + done + + local myconf=( + --with-imagepath=/usr/include/X11/bitmaps:/usr/include/X11/pixmaps:/usr/share/icons/fvwm + --enable-package-subdirs + $(use_enable bidi) + $(use_enable doc mandoc) + $(use_enable go golang) + $(use_enable nls) + $(use_enable nls iconv) + $(use_enable perl perllib) + $(use_with readline readline-library) + $(use_enable svg rsvg) + --enable-png + ) + + use readline && myconf+=( --without-termcap-library ) + + econf "${myconf[@]}" +} + +src_compile() { + PREFIX="${EPREFIX}/usr" emake AR="$(tc-getAR)" + if [[ ${PV} == *9999 ]]; then + use doc && emake -C doc + fi +} + +src_install() { + emake DESTDIR="${ED}" prefix="/usr" exec_prefix="/usr" datarootdir="/usr/share" install + + dodir /etc/X11/Sessions + echo "/usr/bin/fvwm3" > "${ED}/etc/X11/Sessions/${PN}" || die + fperms a+x "/etc/X11/Sessions/${PN}" || die + + python_scriptinto "/usr/bin" + python_doscript "${ED}/usr/bin/FvwmCommand" "${ED}/usr/bin/fvwm-menu-desktop" + einstalldocs + + make_session_desktop fvwm3 /usr/bin/fvwm3 +} + +pkg_postinst() { + if use go; then + ewarn "FvwmPrompt has been installed, it provides the functionality of both FvwmCommand and FvwmConsole." + ewarn "For compatibility with the existing fvwm2 configurations, the ebuild will install a FvwmCommand wrapper script." + ewarn "If you need FvwmConsole, install ${PN} with USE=\"-go\", but FvwmPrompt and FvwmCommand will not be installed." + else + ewarn "FvwmConsole has been installed, but FvwmCommand and FvwmPrompt are no longer included in this ebuild." + ewarn "If you need FvwmPrompt or FvwmCommand, install ${PN} with USE=\"go\"." + ewarn "In that case, FvwmPrompt will replace FvwmConsole and provide the same functionality in a more flexible way." + fi +} diff --git a/x11-wm/fvwm3/fvwm3-9999.ebuild b/x11-wm/fvwm3/fvwm3-9999.ebuild index 1d502d3e87c8..958bb6e0c085 100644 --- a/x11-wm/fvwm3/fvwm3-9999.ebuild +++ b/x11-wm/fvwm3/fvwm3-9999.ebuild @@ -22,14 +22,21 @@ fi LICENSE="GPL-2+ FVWM go? ( Apache-2.0 BSD MIT )" SLOT="0" -IUSE="bidi debug doc go netpbm nls perl readline stroke svg tk vanilla lock" +IUSE="bidi debug doc +go netpbm nls perl readline stroke svg tk lock" REQUIRED_USE=" ${PYTHON_REQUIRED_USE}" DOCS=( NEWS ) if [[ ${PV} == 9999 ]]; then - DOCS+=( dev-docs/COMMANDS dev-docs/DEVELOPERS.md dev-docs/INSTALL.md dev-docs/PARSING.md dev-docs/TODO.md dev-docs/NEW-COMMANDS.md ) + DOCS+=( + dev-docs/COMMANDS + dev-docs/DEVELOPERS.md + dev-docs/INSTALL.md + dev-docs/PARSING.md + dev-docs/TODO.md + dev-docs/NEW-COMMANDS.md + ) fi BDEPEND=" @@ -72,7 +79,6 @@ RDEPEND="${PYTHON_DEPS} >=dev-perl/X11-Protocol-0.56 ) ) - media-libs/libpng:= readline? ( sys-libs/ncurses:= sys-libs/readline:= @@ -86,21 +92,10 @@ RDEPEND="${PYTHON_DEPS} DEPEND="${COMMON_DEPEND} x11-base/xorg-proto" -PATCHES=( - "${FILESDIR}/${P}-translucent-menus.patch" -) - -if [[ ${PV} == 9999 ]]; then - PATCHES+=( - "${FILESDIR}/${P}-goflags.patch" - ) -fi - src_prepare() { default - if use doc; then - eapply "${FILESDIR}/${P}-htmldoc.patch" - fi + use go && ( sed -e 's/GOFLAGS=-ldflags="-s -w"/GOFLAGS=/' \ + -i bin/FvwmPrompt/Makefile.am || die ) eautoreconf } @@ -133,13 +128,13 @@ src_configure() { use readline && myconf+=( --without-termcap-library ) - econf ${myconf[@]} + econf "${myconf[@]}" } src_compile() { PREFIX="${EPREFIX}/usr" emake AR="$(tc-getAR)" if [[ ${PV} == *9999 ]]; then - use doc && emake -C doc html + use doc && emake -C doc fi } @@ -148,17 +143,10 @@ src_install() { dodir /etc/X11/Sessions echo "/usr/bin/fvwm3" > "${ED}/etc/X11/Sessions/${PN}" || die - fperms a+x /etc/X11/Sessions/${PN} || die + fperms a+x "/etc/X11/Sessions/${PN}" || die python_scriptinto "/usr/bin" python_doscript "${ED}/usr/bin/FvwmCommand" "${ED}/usr/bin/fvwm-menu-desktop" - if use doc; then - if [[ ${PV} == *9999 ]]; then - HTML_DOCS=( doc/*.html ) - else - HTML_DOCS=( doc/html/*.html ) - fi - fi einstalldocs make_session_desktop fvwm3 /usr/bin/fvwm3 @@ -168,9 +156,9 @@ pkg_postinst() { if use go; then ewarn "FvwmPrompt has been installed, it provides the functionality of both FvwmCommand and FvwmConsole." ewarn "For compatibility with the existing fvwm2 configurations, the ebuild will install a FvwmCommand wrapper script." - ewarn "If you need FvwmConsole, install ${PN} with USE=\"-go\", but FvwmPrompt and FvwmCommnd will not be installed." + ewarn "If you need FvwmConsole, install ${PN} with USE=\"-go\", but FvwmPrompt and FvwmCommand will not be installed." else - ewarn "Fvwmconsole has been installed, but FvwmCommand and FvwmPrompt are no longer included in this ebuild." + ewarn "FvwmConsole has been installed, but FvwmCommand and FvwmPrompt are no longer included in this ebuild." ewarn "If you need FvwmPrompt or FvwmCommand, install ${PN} with USE=\"go\"." ewarn "In that case, FvwmPrompt will replace FvwmConsole and provide the same functionality in a more flexible way." fi diff --git a/x11-wm/fvwm3/metadata.xml b/x11-wm/fvwm3/metadata.xml index 569ae86d8fb1..41f1d6eda8d2 100644 --- a/x11-wm/fvwm3/metadata.xml +++ b/x11-wm/fvwm3/metadata.xml @@ -20,6 +20,7 @@ <flag name="stroke">Mouse Gesture support</flag> </use> <upstream> + <remote-id type="github">fvwmorg/fvwm3</remote-id> <bugs-to>https://github.com/fvwmorg/fvwm3/issues</bugs-to> <changelog>https://raw.githubusercontent.com/fvwmorg/fvwm3/master/CHANGELOG.md</changelog> </upstream> |