I've talked about this very issue with one of Tcl Core Team members,
Joe English, on 2008-01-21 in the Tcler's chatroom. Since the server running that room doesn't provide convenient chat logs accessible via WWW, here's the relevant part of the discussion (with kostix being me and jenglish being Joe English) -- it (possibly) clarifies the subject and the position of one of the chief Tk developers on this issue:

------
[03:40] kostix ok, the question: when we implemented raising tkabber from a tray icon, it seemed to misbehave under metacity and kwin (IIRC). today I've been shown this bugreport regarding raising Tk windows under metacity: http://bugzilla.gnome.org/show_bug.cgi?id=567528 -- it states that instead of XRaiseWindow a well-behaving app should set some property (?) somewhere. what do you think about this?

[03:40] kostix  some _NET_ACTIVE_WINDOW messages

[03:40] jenglish        kostix -- I think this is a known issue.

[03:40] kostix Tk really uses XRaiseWindow and it's documentation sounds ok to me

[03:40]    * jenglish downloading ...

[03:41] jenglish ... part 1 of the known issue is that X clients don't get to say "raise this window" -- they just get to say "Dear WM, please if you would be so kind, raise this window for me."

[03:43] jenglish (That's *always* been the case, since the dawn of the ICCCM. Nobody noticed until recently, 'cause up til now WMs have always complied with those requests.)

[03:46] jenglish ... looks like this is not really a bug. Comment #9 from HP is correct.

[03:47] kostix jenglish: but it clearly states "you should file a bug..." -- how do you interpret that?

[03:47] kostix or it just means "either way is ok if it's properly documented"?

[03:48] jenglish Quoth HP: "If they have an API meaning "bring this window to user's attention" and they use XRaiseWindow() to mean that, then yes, you should file a bug with them."

[03:49] jenglish Tk doesn't have an API meaning "bring this window to user's attention."

[03:49] jenglish It has [raise], which means "Please dear WM bring this window to the top of the stacking order if it's not too much of a bother..."

[03:50] kostix jenglish: how "bring to the user attention" would be different then? say, flash a window's frame without moving it from its layer?

[03:53] jenglish "bring to the user's attention" is a fairly recent invention (circa 2002?). Tk just hasn't caught up yet.

[03:54] jenglish        Note that Windows XP and later has similar issues.

[03:54] patthoyts       On windows it occurs as a side-effect of [raise]

[03:54] kostix  eh? I know about FlashWindow(), is it this?

[03:54] patthoyts       yeah

[03:55] patthoyts       Although its called through SetForegroundWindow

[03:55] patthoyts If your app isn't foreground then the wm will not let it raise tot he top but calls FlashWindow instead.

[03:55] jenglish        That's what happens under metacity and kwin, too.

[03:56] * jenglish in the case of kwin, it depends on user preferences, of course.

[03:56] kostix  well, this might have sense

[03:57] kostix but the modal dialog box anyway pops the window in front of me in windows, IIRC

[04:00] patthoyts Not for me. If I do [after 2000 [list raise .]] and swith to firefox, it doesnt let tkchat raise over firefox.

[04:00] patthoyts We had a discussion about this here a few days ago. There is evidently some setting in windows that disables this as having a flashing taskbar item for this is normal on XP but some people dont get that.

[04:01] kostix hm, I'm sure I had cursed this behaviour under certain circumstances

[04:01] kostix  may be another window of a currently active app?

[04:01] jenglish        That's how current X WMs do it too.

[04:04] jenglish Wait, kostix -- this bug report pertains to tkabber? A chat/IM client?

[04:04] jenglish Please, I beg you: stop trying to do whatever it is you're trying to do.

[04:05] kostix jenglish: that concrete bug I showed? no. but it was brought to my attention because of this

[04:05] jenglish This whole _NET_WM_DEMANDS_ATTENTION / flashing taskbar / [raise] doesn't work anymore thing is part of an ever-escalating war between window managers and applications.

[04:06] kostix jenglish: the idea was to unconditionally bring tkabber's window to front on a left mouse-button click on the tray icon. on some WMs it didn't work well

[04:06] jenglish        Exactly.

[04:06] kostix  "the old ones" like fvwm did OK

[04:08] jenglish        Newer WMs don't let you do that any more.

[04:08] jenglish        And the harder you try, the more they will fight back.

[04:08] kostix jenglish: but my case is clear "bring that bloody window up, I say" thing

[04:09] jenglish As soon as you find some way to "just make this window do what I want it to do", Lubos will find a way to defeat you next year.

[04:09] jenglish EXACTLY! You, as an application, should NOT be saying "bring that bloody window up."

[04:09] jenglish You, as an application, get to say "Please dear WM bring this window to the user's attention."

[04:10] jenglish If the WM chooses not to comply, and instead just flashes the taskbar, LEAVE IT AT THAT. That's what the user has decided he wants.

[04:10] kostix jenglish: what about me being the user? I can understand this "polite" thing, it's probably good in terms of HID guidelines but when I click the tray icon I'm making a conscious gesture, right?

[04:11] jenglish If you, as a user, don't like that behavior, change your WM settings. Or use a different WM.

[04:12] jenglish If you, as a program author, don't like that behavior, STOP FIGHTING IT. Because Lubos will always win in the end.

[04:16] kostix  ok, thanks jenglish

[04:17] jenglish In the meantime, Tk really ought to support _NET_WM_DEMANDS_ATTENTION. There's an FR open for that, undealt with to date.

[04:21] stu     Lubos ?

[04:21] jenglish        Lubos Lunak.  Author of KWIN, the KDE window manager.

[04:22] jenglish Inventor of "focus-stealing prevention" mechanisms and _NET_WM_DEMANDS_ATTENTION.
------

Hope this helps.



--
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to