nanogui: Thread: GrMovewindow fixes and important window manager issues


[<<] [<] Page 1 of 1 [>] [>>]
Subject: GrMovewindow fixes and important window manager issues
From: "Greg Haerr" ####@####.####
Date: 14 Dec 1999 16:47:20 -0000
Message-Id: <009601bf4641$2b863ee0$15320cd0@gregh>

Dan,
    I've fixed two of the three bugs submitted by
your Nano-X movewindow demo.  The child window
move bug in Nano-X and the grandchildren move
in Nano-X and Microwindows now work.

I am, however, having some bigger problems getting
the clipping code to work when moving windows under
Nano-X.  I remember that it was quite tricky getting it
all right when I rewrote everything for Microwindows,
but we're still using separate clipping code and
window structures for Nano-X and Microwindows.
I've been thinking that perhaps I ought to use the same
code for both.  I've got Nano-X working, except
for the border draw code isn't clipped from the root
window.  This might be because there's considerable
kluge from the original mini-X in regards to borders
and border drawing.

The original implementation "temporarily enlarges" the window
rectangle when drawing the border, then shrinks it down
again right afterwards.  In the Microwindows implementation,
I keep (ala MSWindows) two separate rectangles, a "window"
rect and a "client" rect.  The main clipping code uses the window
rect, already calculated, for the window clipping, rather than
kluging the border stuff.  

My question is, if I change the code to use the Microwindows
internal window structure, it's a little less "X-y" but the kluges
are gone, and it'll all work.  Also it'll work the same between
APIs, probably a good thing.  The only real issue is whether
a Nano-X window manager cares about this sort of thing.
In the new model, the window manager would ask for a GC
for a window, including the borders, and then draw the borders
only.  In the current Nano-X model, there's no way for a window
manager to draw a border....

What do you think?

Regards,

Greg

[<<] [<] Page 1 of 1 [>] [>>]


Powered by ezmlm-browse 0.20.