Re: ICCCM compliance of GTK...



On 12 Apr, Owen Taylor shouted:
->  
->  > Low-and-behold!
->  > 
->  > I have discovered the following:
->  > GTK is not ICCCM 2.0 compliant.
->  > infact no WindowManager that GTK works under (that is it can get the
->  > keyboard focus) is icccm 2.0 compliant.
->  > 
->  > if you read the bit about "WM_PROTOCOLS" and the "WM_TAKE_FOCUS"
->  > property.. you will see that if the WM_TAKE_FOCUS property is set the
->  > client wishes to participate in the input focus setting, so instead of
->  > the WM explicitly setting the focus, it sedns a client message:
->  > 
->  >    a1=XInternAtom(disp,"WM_TAKE_FOCUS",False);
->  >    a2=XInternAtom(disp,"WM_PROTOCOLS",False);
->  >    ev.type=ClientMessage;ev.window=ewin->client.win;ev.message_type=a2;
->  >    ev.format=32;ev.data.l[0]=a1;ev.data.l[1]=CurrentTime;
->  >    XSendEvent(disp,ewin->client.win,False,0,(XEvent *)&ev);
->  
->  That part of the ICCCM is certainly a bit obscure. But after
->  reading it a few times, I think I agree with the interpretation
->  of fvwm2 and currently in GTK.
->  
->   The WM should call XSetInputFocus if wm_hints->input is True, regardless
->     of WM_TAKE_FOCUS
->  
->   If WM_TAKE_FOCUS is true, then it should send the client message.

exactly. GTK sest the WM_TAKE_FOCUS property, but does nto seem to
respont to clientmessage events telling it to take focus. Thats How I
discovered this. :)

->  Otherwise, there would be no difference between the GloballyActive
->  and the LocallyActive modes mentioned in the ICCCM.
->  
->  You ask, "why the client message for LocallyActive? Isn't the FocusIn 
->  event enough?"
->  
->  The answer, I think, is at the end of 4.2.7 - XSetInputFocus must
->  have a valid timestamp, so the client cannot call XSetInputFocus
->  in response to FocusIn (which doesn't have a timestamp) to 
->  transfer the focus to a subwindow.

CurrentTime is a valid timestamp - replaced by the xserver with the
current time...

->  That's how I read it, anyways...
->                                          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]