Subject: Re: bug#1405: detached GTK+ tool bar

From: "Jan D." <[email-masked]>
Date: Mon, 2 Mar 2009 08:01:24 +0100

How does this work when the button is a menu, i.e. help?

I will be travelling for 2 weeks. I can't test it until then.

      Jan D.

1 mar 2009 kl. 18.43 skrev Stephen Berman <[email-masked]>:

> On Sat, 17 Jan 2009 21:24:50 +0100 Stephen Berman <[email-masked] 
> > wrote:
>
>> On Thu, 18 Dec 2008 21:46:27 +0100 Stephen Berman <[email-masked] 
>> > wrote:
>>
>>> On Thu, 18 Dec 2008 19:50:22 +0100 Jan Djärv <[email-masked] 
>>> > wrote:
>>>
>>>> Stephen Berman skrev:
>>>>> On Sun, 23 Nov 2008 12:01:09 +0100 Jan Djärv <jan.h.d@swipne 
>>>>> t.se> wrote:
>>>>>>
>>>>>> I'd rather see if the focus can be kept to the frame.  We can  
>>>>>> perhaps put some
>>>>>> hints to the window manager.  I'll look in to it.  Can the OP  
>>>>>> please tell us
>>>>>> what window manager he is using and what kind of focus model he  
>>>>>> has (click to
>>>>>> focus, focus follows mouse)?
>>>>>
>>>>> I'm using KDE/kwin and click to focus.  But I also see the same  
>>>>> behavior
>>>>> (i.e. focus not returning to the window/frame the tool bar was  
>>>>> detached
>>>>> from) with a focus follows mouse policy.
>>>>>
>>>>
>>>> I've made a change, can you test it?
>>>>
>>>> Thanks,
>>>>
>>>>    Jan D.
>>>
>>> I just did, and confirm that focus now switches back to the frame  
>>> after
>>> clicking a button on the detached tool bar.  Thanks!
>>
>> I just learned about the variable x-gtk-whole-detached-tool-bar; when
>> this is non-nil and the tool bar is detached, focus fails to switch  
>> back
>> to the frame after clicking a button on the detached tool bar.  So  
>> your
>> fix does not work with x-gtk-whole-detached-tool-bar non-nil.
>>
>> In GNU Emacs 23.0.60.29 (i686-pc-linux-gnu, GTK+ Version 2.14.4) of
>> 2009-01-11 on escher
>>
>> Steve Berman
>
> The patch below (against the current CVS trunk) makes focus return to
> the frame regardless of the value of x-gtk-whole-detached-tool-bar
> (i.e., it works both with the proxy (arrow) and the whole detached  
> tool
> bar).  Jan D. or somebody else who's familiar with GTK+ should check  
> to
> make sure it does not cause any problems elsewhere.
>
> Steve Berman
>
>
> 2009-03-01  Stephen Berman  <[email-masked]>
>
>    * gtkutil.c (xg_tool_bar_callback): Return focus to the frame
>    after we have clicked on a detached tool bar button (bug#1405).
>    This replaces the reverted change below.
>    (xg_tool_bar_proxy_callback): Revert previous change (bug#1405).
>
>
> *** emacs/src/gtkutil.c.~1.146.~    2009-03-01 17:06:07.000000000  
> +0100
> --- emacs/src/gtkutil.c    2009-03-01 17:41:39.000000000 +0100
> ***************
> *** 3461,3466 ****
> --- 3461,3470 ----
>       this is written.  */
>    event.modifiers = x_x_to_emacs_modifiers (FRAME_X_DISPLAY_INFO  
> (f), mod);
>    kbd_buffer_store_event (&event);
> +
> +   /* Return focus to the frame after we have clicked on a detached
> +      tool bar button. */
> +   Fx_focus_frame (frame);
>  }
>
>  /* Callback function invoked when a tool bar item is pressed in a  
> detached
> ***************
> *** 3480,3490 ****
>    xg_tool_bar_callback (wbutton, client_data);
>    FRAME_PTR f = (FRAME_PTR) g_object_get_data (G_OBJECT (wbutton),
>                                                 XG_FRAME_DATA);
> -   /* Put focus back to the frame after we have clicked on a detached
> -      tool bar button. */
> -   Lisp_Object frame;
> -   XSETFRAME (frame, f);
> -   Fx_focus_frame (frame);
>  }
>
>  /* This callback is called when a tool item should create a proxy  
> item,
> --- 3484,3489 ----
>