Re: [gtk-list] Re: WM hints interface
- From: raster redhat com
- To: gtk-list redhat com
- cc: owt1 cornell edu, Marko Macek snet fri uni-lj si
- Subject: Re: [gtk-list] Re: WM hints interface
- Date: Thu, 5 Mar 1998 17:14:46 -0500 (EST)
On 5 Mar, Owen Taylor shouted:
->
-> raster@redhat.com writes:
->
-> > On 3 Mar, Marko Macek shouted:
-> > -> raster@redhat.com wrote:
-> > -> > even thoogh the ICCCM specs say it must be of the default visual - there
-> > -> > is no good reason for a programs icon window to not be on any visual. S
-> > -> > window of any visual canbe reparented to a parent of a different
-> > -> > visual. If you want a color icon, use an icon_window. Using a pimap
-> > -> > will mena you violate the ICCCM standards - having a multi-depth pixmap
-> > -> > here woudl break WM's if they aren't wirtten to be very robust and
-> > -> > check pixmap depth becuase ICCCM allows them to ASSUME 1-bit deep icon
-> > -> > pixmaps.
-> > ->
-> > -> I agree with all of the above mentioned (ICCCM suggests but does not
-> > -> specify
-> > -> that icon windows should use the default visual). Also using color
-> > -> icon/mask
-> > -> pairs is not ICCCM compliant.
-> >
-> > well according to the Xlib Programming Manual for Version 11 from
-> > O'Reilly & Associates - bottom of page 415....
-> > "The icon window:
-> >
-> > * Must be an InputOutput child of the root window.
-> > * Should be one of the sizes specified in the XA_WM_ICON_SIZE property
-> > on the root (described in Section 12.3.4.1).
-> > * Must use the default visual and default colormap for the screen in
-> > question.
-> > ....
->
-> Interesting - the R6.3 ICCCM has those all as "should" not "must",
-> though there are "musts" further down in the list.
Hmmm... looks like its back to ambiquity.. I'll take this dissention in
documentation to mean it's a free-for-all to disobey it :)
->
-> > so it must use the default visual and colormap - i can see the reason
-> > for using the default colormap (avoid "colormap flashing" with icons -
-> > also it states elsewhere that the WM should exclusively be incharge of
-> > colormap changing) - but default visual? i see no good reason for this
-> > to be in the ICCCM specs. I believe we could safely break this bit of
-> > ICCCM.
->
-> But each Colormap has an associated visual ...
->
-> What I think your saying is:
->
-> "The icon window should be either the root visual and default colormap or
-> any TrueColor visual (and StaticGrey/StaticColor ?)."
yes..:) thats what I mean :)
-> This won't work if the TrueColor visual is actually implemented as a
-> separate colormap (as is the case on my current 8bit display) but
-> should be safe on any hardware that I know of as long as the
-> TrueColor visual has a reasonable number of planes.
basically what I mean is to avoid "custom" colormaps on the window so a
colormap does not have to be installed or created just for the window
to look right.
-> > -> > What i woudl like is a canonical unambigous list of all the hints
-> > -> > (motif included) ont eh cxlib level (ie atom names) and EXACTLY what is
-> > -> > expected of these hints.
-> > ->
-> > -> I agree. Making such a list would be very useful.
-> > ->
-> > -> > -> to that window. It's not supported by any wm I have seen (I will support
-> > -> > -> it in icewm unless I find something is wrong with this).
-> > -> >
-> > -> > if it wants a leader it should set the group XID to its own window Id
-> > -> > (according to ICCCM) and all other windows int hat grup chocul set the
-> > -> > XID to the leader window ID - according to ICCCM. If it is not doing
-> > -> > this si it not conforming to ICCCM specs - which i spent the whole
-> > -> > weekend reading over again - making E0.14 fully 100% ICCCM compliant.
-> > ->
-> > -> I understand this. I am not sure if using WM_TRANSIENT on the group
-> > -> leader
-> > -> window should have the effect of having an group transient (instead of
-> > -> just window transient) window.
-> >
-> > true - it is a little ambiguous - but i dont see that it says anywhere
-> > that properties of the group leader should be inherited by group
-> > followers - and these properties imlicitly inherited via the WM - the
-> > app should set them explicitly if it wishes inheritance to take place.
-> > Al least thats my view.
->
-> [...]
->
-> Quoting the ICCCM:
->
-> 2.The properties of the window group leader are those for the group as
-> a whole (for example, the icon to be shown when the entire group is
-> iconified).
->
-> Of course, "properties" here is somewhat ambiguous - I don't know if it
-> applies to transience or not.
Hm.. well I'd assume it doesn't mean transience is inherited.. although
that is technically a property...
-> > not if the app doing the scaling has an intelligent "mipmapping" scheme
-> > - and always scale down, not up, if possible.
-> >
-> > anyway - here's an idea for being able to have multiple sized icons of
-> > any size... any time - instead of having all the sizes fixed at startup
-> > of the program (limiting if the wm mid-stream decides to change its
-> > icon sizes for lets say mini icons to 10x10 instead of 16x16)
-> >
-> > this is a little more involved... but It's more extenisble and
-> > powerful..
-> >
-> > WM sends XClientMessage with ATOM of WM_NEED_ICON_PIXMAP_SIZE - data is
-> > in 32-bit chunks (long) data[0]=width in pixels of requested iocn,
-> > data[1]= height.
-> >
-> > client responds by creating these pixmaps and setting a property on its
-> > client window wiht ATOM WM_HAVe_ICON_PIXMAP_SIZE, data in 32-bit (long
-> > format) with data[0] width, data[1] height, - which are exact copie sof
-> > the size requested by the wm (so the wm knows this property change was
-> > in response to that request for that size), then data[2] is the pixmap
-> > id and data[3] is the mask id (0 if there is no mask)
-> >
-> > we can extend this so data[2] int he ClientMeasags is also the visualID
-> > for which the pixmap shoudl be created (if 0 no specific visual Id is
-> > required) and data[4] for the property can be the visul Id it was
-> > created for (always set), The WM will pick up the "reply" to this
-> > request as a PropertyChangeNotify event...
-> >
-> > this allows the WM to request an arbitary stream of icons - as many as
-> > it likes - or as few as it likes. - it allows re-negotiation and
-> > more... I'm sure there may be some additions to this others may wish to
-> > make?
->
-> Hmmm ... this seems to potentially slow down the creation process
-> quite a bit - depending on the way the WM works, it might not
-> be able to show the window correctly until it has the icons for
-> the window - which means that between the MapRequestEvent and
-> the map event, the WM has to send the icon request to the client,
-> and the client has to create the icons.
the wm can "defer ralisation" fo icons until all the hints are
negotiated and keep drawing the border anyway... :) E0.14 does this
with external image classes - it doesn't wait for a reply - it adds the
external imageclass when and if it gest it - and soldiers
-> Since I suspect that WM's will most likely have very similar
-> requirements for all windows on a screen, might it not be better
-> to specify the requirements on a root window property, and then
-> if you want to support dynamic changes, either send the
-> client message when things change, or specify that clients
-> should request PropertChangeNotify events on the root window?
hmm I'd go for B - clients select property change on the root window...
in that cae all we need is a quick stat struct to put into the property
data like:
int num_pixmaps_sizes;
int width,hiehgt,visid;
etc.
per pixmap size.
and ont he client window set a property with the same format except the
data elements are
int width,height,visid,pixmapid,maskid;
?
-> Regards,
-> Owen
->
--
--------------- Codito, ergo sum - "I code, therefore I am" --------------------
raster@rasterman.com /\___ /\ ___/||\___ ____/|/\___ raster@redhat.com
Carsten Haitzler | _ //__\\ __||_ __\\ ___|| _ / Red Hat Advanced
218/21 Conner Drive || // __ \\_ \ | | \ _/_|| / Development Labs
Chapel Hill NC 27514 USA ||\\\/ \//__/ |_| /___/||\\ 919 547 0012 ext 282
+1 (919) 929 9443, 801 4392 For pure Enlightenmenthttp://www.rasterman.com/
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]