Christopher Zimmermann <chr...@openbsd.org> writes:

> Hi,
>
> this is a patch to dzen2 to do proper hiding.
> I also submitted upstream, but the project hat its last commit 9 years
> ago, so I'm not sure whether it will get merged.
> See https://github.com/robm/dzen/pull/57
> OK?
>
> Christopher

I haven't used dzen2 in a long time but the diff reads fine: XMapWindow
and XUnmapWindow are the correct functions to call to show and hide a
window on xorg.  It would be interesting to know what the author thought
tho; it's unlikely that they didn't know how mapping and unmapping
windows works.

Here's a proper diff for the port, I'm currently testing it but seems to
work fine


Index: Makefile
===================================================================
RCS file: /home/cvs/ports/x11/dzen2/Makefile,v
retrieving revision 1.9
diff -u -p -r1.9 Makefile
--- Makefile    12 Jul 2019 20:51:09 -0000      1.9
+++ Makefile    9 Feb 2022 16:53:52 -0000
@@ -7,7 +7,7 @@ GH_COMMIT=              488ab66019f475e35e0676466218
 GH_ACCOUNT=            robm
 GH_PROJECT=            dzen
 V=                     0.9.5
-REVISION=              2
+REVISION=              3
 
 DISTNAME=              dzen2-$V
 PKGNAME-main=          ${DISTNAME}
Index: patches/patch-action_c
===================================================================
RCS file: patches/patch-action_c
diff -N patches/patch-action_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-action_c      9 Feb 2022 16:53:30 -0000
@@ -0,0 +1,32 @@
+$OpenBSD$
+
+map/unmap instead of resizing to a 1px tall window
+cf. https://github.com/robm/dzen/pull/57
+
+Index: action.c
+--- action.c.orig
++++ action.c
+@@ -390,9 +390,9 @@ a_hide(char * opt[]) {
+       printf("n:%d\n", n);
+       if(!dzen.title_win.ishidden) {
+               if(!dzen.slave_win.ishmenu)
+-                      XResizeWindow(dzen.dpy, dzen.title_win.win, 
dzen.title_win.width, 1);
++                      XUnmapWindow(dzen.dpy, dzen.title_win.win);
+               else
+-                      XResizeWindow(dzen.dpy, dzen.slave_win.win, 
dzen.title_win.width, 1);
++                      XUnmapWindow(dzen.dpy, dzen.slave_win.win);
+ 
+               dzen.title_win.ishidden = True;
+       }
+@@ -404,9 +404,9 @@ a_unhide(char * opt[]) {
+       (void)opt;
+       if(dzen.title_win.ishidden) {
+               if(!dzen.slave_win.ishmenu)
+-                      XResizeWindow(dzen.dpy, dzen.title_win.win, 
dzen.title_win.width, dzen.line_height);
++                      XMapWindow(dzen.dpy, dzen.title_win.win);
+               else
+-                      XResizeWindow(dzen.dpy, dzen.slave_win.win, 
dzen.title_win.width, dzen.line_height);
++                      XMapWindow(dzen.dpy, dzen.slave_win.win);
+ 
+               dzen.title_win.ishidden = False;
+       }

Reply via email to