Hello,
I'm trying to find out how to have multiple windows sharing the same frame.
I'm playing with FvwmTabs but I also want to experiment with a simpler
implementation on my own. I wrote something like the following in the main
fvwm code.

Add tab: (client is the fw->wins.client from another frame)
        XReparentWindow(dpy, client, fw->wins.parent, 0, 0);
        XResizeWindow(dpy, client, fw->frame_g.width, fw->frame_g.height);
        XLowerWindow(dpy, client);
        XUnmapWindow(dpy, client);

Next tab: (fw->wins.client is advanced by a linked list)
        XMapWindow(dpy, fw->wins.client);
        XRaiseWindow(dpy, fw->wins.client);
        XSaveContext(dpy, fw->wins.client, FvwmContext, (caddr_t) fw);
        rectangle frame_g = fw->frame_g;
        frame_force_setup_window(
                fw, frame_g.x, frame_g.y, frame_g.width, frame_g.height,
                True);

When I switch to another tab, the window works as normal except it doesn't
recieve FocusIn/Out events. This stops the focus decor from changing when the
mouse is in the window. When I switch back to the first tab, it works properly.

There seems to be something special about the first client window because it
was originally in that frame. I thought setting FvwmContext would give each
client the exact same structure but it doesn't. HandleFocusIn is never called
except for the first window. I'm just wondering, what is the solution to this?

David


Reply via email to