[comp.windows.x] Proposals for Release 5 of X11

thomas%apgraph%ap542@ztivax.siemens.com (Thomas Oeser (DI AP 313)) (08/03/90)

Proposal: It should be possible to specify independently a pixmap/color for
	  the top, left, bottom and right border of a window

				or

	  The server should generate an event, when he has redrawn the border
	  of a window


Rationale: This would give some means to the programmer to create advanced
           (sub-)window "decoration" (e.g. 3D-apperance).

	   The 1st version would put the load completely on the server and
	   would allow straight forward programming.

	   The 2nd version would put the load to the application (the window
	   would overwrite its border after recieving this event using a GC
	   with subwindow mode set to "IncludeInferiors" and using the parent
	   window id as drawable); but this is also aceptable.

Thomas Oeser

PS: BTW, this would save thousands of lines in the Motif code :-)


--------------------------------------------------------------------------------
Internet:	thomas%apgraph%ap542@ztivax.siemens.com
UUCP:		...!mcvax!unido!ztivax!ap542!apgraph!thomas
Phone:		+ 49 89 636 47537
Fax:		+ 49 89 636 45522
Postal Mail:	Siemens AG, DI AP 313, Carl-Wery-Str. 22, D-8000 Munich 83
--------------------------------------------------------------------------------

mouse@LARRY.MCRCIM.MCGILL.EDU (08/10/90)

> Proposal: It should be possible to specify independently a
>           pixmap/color for the top, left, bottom and right border of
>           a window
>				or
>           The server should generate an event, when he has redrawn
>           the border of a window

The former is not very general (why must borders be split into top,
left, bottom, right?) and suffers from (probably fixable) semantic
problems (what about the little squares in the corners?  Which piece of
the border do they belong to?).

The latter needs no extensions: simply give the window a border-width
of zero and make it a child of another window which sticks out by the
desired amount.  Handle expose events on this second window as
indications that pieces of the "border" need to be redrawn.  The second
window might instead be a sibling of the first instead of the parent,
if that turns out to be more convenient.  In particularly extreme cases
it might even be four windows (top, left, bottom, right) instead of one.

					der Mouse

			old: mcgill-vision!mouse
			new: mouse@larry.mcrcim.mcgill.edu

thomas@weigelshofen.uucp (Thomas Oeser (DI AP 313)) (08/14/90)

This is my answer to the response of "ther Mouse":

>>> Proposal: It should be possible to specify independently a
>>>           pixmap/color for the top, left, bottom and right border of
>>>           a window
>>>				or
>>>           The server should generate an event, when he has redrawn
>>>           the border of a window

>The former is not very general (why must borders be split into top,
>left, bottom, right?) and suffers from (probably fixable) semantic
>problems (what about the little squares in the corners?  Which piece of
>the border do they belong to?).
>
>The latter needs no extensions: simply give the window a border-width
>of zero and make it a child of another window which sticks out by the
>desired amount.  Handle expose events on this second window as
>indications that pieces of the "border" need to be redrawn.  The second
>window might instead be a sibling of the first instead of the parent,
>if that turns out to be more convenient.  In particularly extreme cases
>it might even be four windows (top, left, bottom, right) instead of one.
>
>					der Mouse

I agree that the first proposal is less general than the second one. But it
leaves the work at the server (similar to the current way borders are handled).

But, do you really mean to create 2 (or more) windows for every (sub-)window
within a window hierarchy. Even if we accept that a window "is a lightweigth
resource", this would be too much resource wasting.

Thomas Oeser


*********** DISCLAIMER: All opinions stated here are strictly my own ***********
--------------------------------------------------------------------------------
Internet:	thomas%apgraph%ap542@ztivax.siemens.com
Europe:		thomas%apgraph%ap542@ztivax.UUCP
UUCP:		...!uunet!mcsun!unido!ztivax!ap542!apgraph!thomas
Phone:		+ 49 89 636 47537
Fax:		+ 49 89 636 45522
Postal Mail:	Siemens AG, DI AP 313, Carl-Wery-Str. 22, D-8000 Munich 83
		West Germany
--------------------------------------------------------------------------------

mouse@SHAMASH.MCRCIM.MCGILL.EDU (der Mouse) (08/15/90)

>>> Proposal: [...] or
>>>           The server should generate an event, when he has redrawn
>>>           the border of a window

>> The former [has a few problems]

>> The latter needs no extensions: simply give the window a
>> border-width of zero and make it a child of another window which
>> sticks out by the desired amount.  Handle expose events on this
>> second window as indications that pieces of the "border" need to be
>> redrawn.

> But, do you really mean to create 2 (or more) windows for every
> (sub-)window within a window hierarchy[?]

No, only for those with complicated borders.  If even that is too much
for you, don't use borders at all - just make the window a little
bigger and draw the object that looks visually like a border as
graphics in the window.

I don't for a moment believe there will be too many windows with
complex borders.  I recall someone quoting 150 as a number of windows
for an application to use.  I shudder to think what this monstrosity
must look like if there are 150 things each of which is heavyweight
enough to require a visually fancy border....

> Even if we accept that a window "is a lightweigth resource", this
> would be too much resource wasting.

Is that a guess or do you have experiments demonstrating it?  I suspect
it wouldn't be as bad as you make it sound.  (No, I have no experiments
to support my guess, but I'm not calling it anything but a guess.)

					der Mouse

			old: mcgill-vision!mouse
			new: mouse@larry.mcrcim.mcgill.edu

(For that matter, I never really understood why windows have borders in
the first place.)