fvwm-workers@fvwm.org wrote: > Actually, neither my solution nor Mikhael's work. We forgot to > consider tiled pixmap borders. These have to be drawn in a single > window in order to prevent seams between the pixmaps of the > different windows (when resizing).
This would make it easier to implement colorset support for borders. I know it wouldn't look all that good when resizing. > To further complicate things, > pixmap borders even may have an inner and outer relief. The clean > way to solve this requires > > With pixmap background: > > 8 invisible handles for the cursor shape > 1 big window with the pixmap background > 8 windows for the outer relief (4 sides + 4 corners) > 8 windows for the inner relief > 8 windows for the bevels > ---------------------------------------------------- > = 33 windows I don't think this will do it, the DepressableBorder style makes the corner reliefs be inverted so the bit from the bevel to the corner can't use the side reliefs. I think you need an extra four windows per corner to get this right and still have a smooth background pixmap. Total: 49 windows! There may be a way to reduce the total number of windows given that fvwm only ever resizes or shades one window at a time. All the other windows only need the frame window with a pixmap background (everything drawn in it including bevels) and the 8 invisible cursor windows. The window being resized/shaded can have the extra windows necessary to do smooth resizing I think a working scheme might look like this: At startup: create the extra windows, don't map them 8 outer relief 8 inner relief 8 bevels 4 depressed corner relief (only one corner is pressed at a time) these can be used to un-depress the corners if a side is depressed. When adding a window create the frame window create a pixmap for it draw the background into the pixmap (XFillArea with a tiling GC) draw the reliefs into the pixmap set the frame window background from the pixmap do the mapping When resizing/shading resize the extra windows create backround pixmaps for each and set reparent the extra windows in to the frame window restack the extra windows create the frame background pixmap from the colorset/tiled-pixmap without any frame marks set the new pixmap to the frame window (no need to refresh) perform the resize/shade loop create the frame background pixmap from the colorset/tiled-pixmap and include the relief marks for the new size unmap the 40 extra windows reparent them back to the root (optional I think) I think you can restack windows before mapping them, hopefully this means that a careful restack followed by mapping in the right order would result in no visible sign that the extra windows had mapped over the frame window reliefs and marks (it's going to be laborious to check). I don't think you can use XMapSubWindows of the frame window since that may map subwindows of the client (someone correct me please), if you keep the decor window then it's OK and might make the restacking easier. Unmapping the extra windows after the frame window has it's new background set should also not give any visible sign that the extra windows have gone away. Cheers, Tim. -- Visit the official FVWM web page at <URL:http://www.fvwm.org/>. To unsubscribe from the list, send "unsubscribe fvwm-workers" in the body of a message to [EMAIL PROTECTED] To report problems, send mail to [EMAIL PROTECTED]