Does anyone know of programs that use real "group leader" windows? GTK
programs have some "fake" group leader window, one that isn't reported
to the window manager and therefore is considered not to exist. As you
may remember their existence caused some grief, because group member
windows are treated a lot like transient windows, and the most noticable
effect was that you could not change their occupation.

I am now revisiting (and simplifying) the code that handles group member
windows, but since (to my knowledge) I have never seen them in real
practice, I'm asking if anyone knows of a program with which I can test
it.

My notes for CHANGES are provisionally this (too long probably):

   13 - "TwmWindow.group" was once apparently set to 0 when a window had
        no group leader but this was changed to pointing to its own
        window.  This resulted however in many places checking for both
        conditions, and several checking only for 0 which could not
        occur anymore. Changed it back to 0 (so we can now distinguish
        again windows that really indicate themselves as group leader,
        if we wish) and this gave rise to some simplifications, in particular
        this condition which occurs multiple times

        (tmp_win->group == tmp_win->w &&
         tmp_win->group == t->group &&
         tmp_win->group != t->w)

        via propagation of the first equality to:

        (tmp_win->group == tmp_win->w &&
         tmp_win->w == t->group &&
         tmp_win->w != t->w)

        Then change the convention tmp_win->group == tmp_win->w to
        tmp_win->group == 0

        (tmp_win->group == 0 &&
         tmp_win->w == t->group &&
         tmp_win->w != t->w)

        but the first equality check is not needed at all since it basically
        means "is not a group member", but what we're really interested in is
        the second one "window t belongs to tmp_win's group".

         (tmp_win->w == t->group &&
          tmp_win->w != t->w)

        The last condition seems to be equivalent to tmp_win != t,
        unless somehow more than one TwmWindow got associated with one Window
        (which should not happen). In fact this test can be moved or
        removed even in some cases.

        (t->group == tmp_win->w && t != tmp_win)

        Also, there were various loops through all TwmWindows looking
        for a group leader (or a transientfor), I replaced them with
        GetTwmWindow() which uses the Xlib function XFindContext() which
        uses a hash table lookup.

-Olaf.
-- 
___ Olaf 'Rhialto' Seibert      -- You author it, and I'll reader it.
\X/ rhialto/at/xs4all.nl        -- Cetero censeo "authored" delendum esse.

Reply via email to