Compare commits

...

4 Commits

Author SHA1 Message Date
Adrian Chadd
d7e7a8a6a2 Merge pull request #32 from phillbush/focus-issue
do not reparent client window; fix amiwm#29
2026-02-20 07:04:15 -08:00
Adrian Chadd
f13edf56fd Merge pull request #33 from phillbush/fix-utf8
fix broken UTF-8 character
2026-02-20 07:03:00 -08:00
Lucas de Sena
bf4806c066 fix broken UTF-8 character 2026-02-20 08:35:40 +00:00
Lucas de Sena
beccf8b0fb do not reparent client window; fix amiwm#29
reparenting the client's window creates a few issues:
• We get bogus UnmapNotify and MapNotify events that are ultimately
  generated by amiwm itself.
• We do not get button events from the window, since its frame
  (c->parent) that we have called XGrabButtons(3) onto, is not
  its parent anymore.

To fix this, do not reparent the client window, but its frame window.
And keep the client window always inside the frame.
2026-02-19 20:46:57 +00:00
2 changed files with 10 additions and 6 deletions

View File

@@ -149,10 +149,12 @@ void checksizehints(Client *c)
void open_fscrn(Client *c)
{
XUnmapWindow(dpy, c->parent);
c->fsscr = scr = openscreen(NULL, scr->root);
c->reparenting = 1;
XReparentWindow(dpy, c->window, scr->back, 0, 0);
XReparentWindow(dpy, c->parent, c->fsscr->back, 0, 0);
XRaiseWindow(dpy, c->window);
XMoveResizeWindow(dpy, c->parent, 0, 0, c->fsscr->width, c->fsscr->height);
XMoveResizeWindow(dpy, c->window, 0, 0, c->fsscr->width, c->fsscr->height);
for (Client *dialog = clients; dialog != NULL; dialog = dialog->next)
if (dialog->leader == c)
reparent_client(c->fsscr, dialog);
@@ -171,7 +173,9 @@ void close_fscrn(Client *c, int state)
{
if (c->fsscr == NULL)
return;
XReparentWindow(dpy, c->window, c->parent, 4, c->scr->bh);
XReparentWindow(dpy, c->parent, c->scr, c->x, c->y);
XMoveResizeWindow(dpy, c->parent, c->x, c->y, c->pwidth, c->pheight);
XMoveResizeWindow(dpy, c->window, 4, c->scr->bh, c->pwidth-c->framewidth, c->pheight-c->frameheight);
XResizeWindow(dpy, c->window, c->pwidth-c->framewidth, c->pheight-c->frameheight);
XLowerWindow(dpy, c->window);
scr = c->fsscr;

6
menu.c
View File

@@ -323,15 +323,15 @@ void redraw_item(struct Item *i, Window w)
#ifdef HAVE_XUTF8DRAWIMAGESTRING
Xutf8DrawImageString(dpy, w, scr->dri.dri_FontSet,
scr->menubargc, x+scr->dri.dri_Ascent+1,
1+scr->dri.dri_Ascent, "\302\273", 2);
1+scr->dri.dri_Ascent, "»", 2);
#else
XmbDrawImageString(dpy, w, scr->dri.dri_FontSet,
scr->menubargc, x+scr->dri.dri_Ascent+1,
1+scr->dri.dri_Ascent, "»", 1);
1+scr->dri.dri_Ascent, "\xBB", 1);
#endif
#else
XDrawImageString(dpy, w, scr->menubargc, x+scr->dri.dri_Ascent+1,
1+scr->dri.dri_Ascent, "»", 1);
1+scr->dri.dri_Ascent, "\xBB", 1);
#endif
} else if(i->hotkey) {
int x=m->width-6-scr->hotkeyspace-1+8;