Posted to trash by kostix at Wed Feb 04 17:13:12 GMT 2009view pretty

[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:49]	kostix	I'm not sure any windowing system has such api
[03:50]	kostix	well, ok 
[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:53]	kostix	probably a whole package called "freedesktop" is needed...
[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:54]	kostix	thanks
[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]	kostix	well, ok. where I can buy vista?
[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:16]	kostix	you brought some philosophic mood on me 
[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:18]	kostix	DEMANDS_ATTENTION? let's implement _NET_WM_TK_RULEZ instead!
[04:21]	stu	Lubos ?
[04:21]	jenglish	Lubos Lunak.  Author of KWIN, the KDE window manager.
[04:21]	stu	thanks
[04:22]	jenglish	Inventor of "focus-stealing prevention" mechanisms and _NET_WM_DEMANDS_ATTENTION.