Hello Olivier, Arnaud,
First let me say that I think I may have been a bit blind when it comes
to the usefulness of these features... they do infact look ok, good
work ;-)
ons, 26,.04.2006 kl. 23.39 +0200, skrev olivier.landemarre@utbm.fr:
Quoting Odd Skancke <ozk@atari.org>:
Hi Olivier,
What exactly have been implemented as of now? What other plans do you
have? Could you make an overview over whats been implemented upto now?
Yes of course
wind_set(WF_TOPMOST) with option 0,1 and 2 (see previous mail) are now avaible
and after test looks now ok. Just notice for 2 option now it is not need window
is close to have it (because some developpers dislike it), in this case for easy
implementation, I simply close window and then reopen it. I have a 2 tests
softwares for mode 1 and 2.
Thats all, we have not define how application can know if this feature is
avaible or not (absolutly need for option 2), you not said anything how do this
and my proposition that looks not satisfy all. This looks for me quite strange
to add a flag in appl_getinfo() for each new extension of wind_set() or
wind_get(), I prefer have a standard solution, I don't know if code from
Gerhard work really for all case, perhaps.
I went through some of the postings and wrote this documentation
proposition;
-----------------------------------------------------------------------
WF_TOPMOST
A class of windows that will always 'float' ontop of classical windows.
One key feature of windows in any WF_TOPMOST state is that they do not
disturb current keyboard focus, and can be used to issue important
messages, status raports, etc., without demanding user interaction.
wind_set(handle,WF_TOPMOST, parm1,...)
#define WF_TOPMOST 232
parm1:
0 : Remove topmost state on the corresponding window.
1 : Set topmost state on the corresponding window.
2 : Set topmost state and link window visibility to the
owner's focus. That is, when owner is untopped the
window disappears, when owner regains focus, the
window automatically reappears.
How to use:
handle = wind_create()
wind_set(handle,WF_TOPMOST, 1, dummy, dummy,dummy);
wind_open(handle);
Some common characteristics of windows with any WF_TOPMOST state set;
1) Changing the WF_TOPMOST state can not be done on open windows,
i.e., the window have to be closed before changing the state, then
reopened.
2) Windows which have TOPMOST state 1 or 2 never get keyboard focus.
3) Windows which have TOPMOST state 1 or 2 never get WM_TOPPED or
WM_UNTOPPED AES messages.
WF_TOPMOST state 1:
Setting state 1 will make the corresponding window 'float' ontop of
all other classical windows. State 1 windows will stay ontop until
closed by the user or the application itself.
WF_TOPMOST state 2:
Setting state 1 will make the corresponding window act like windows
with state 1 set, with one important exception; The window is linked to
the window owner's focus status. This means that when the application
that owns the window looses focus, state 2 windows are automatically
made unvisible by the AES. When the application regains focus, the
window is automatically made visible again. This is done automatically,
and no application handling is necessary.
-----------------------------------------------------------------------
Please see if this can be used in the documentation, and add/remove
things that you thing should be changed. I have not started implementing
this mode yet, altho XaAES now lets the user set "Keep over other",
"Keep under others", "Deny keyboard focus" and various other things on
each individual window via a window context popup. Ctrl+alt+right-click
on any part of any window give you access to this popup. But before
implementing WF_TOPMOST I think I need to know all details :)
I'm going to write documentation for this soon, sorry actually I'm very tired.
Combining work with hobby programming will do that to you, I know all
there is to know about that ;-)
Best Regards,
Odd Skancke