On Mon, 2014-11-17 at 11:20 -0600, Federico Mena Quintero wrote:
> On Fri, 2014-11-14 at 18:32 -0800, Roger Luedecke wrote:
> > Care to share this rather easy solution?
>
> Sure. If the bug is the one I'm thinking about, it's easy to fix, but
> it is cumbersome, as it needs to be done for every menu in every
> application that has the bug.
>
> In GTK+, you pop up a menu with
>
> void gtk_menu_popup (GtkMenu *menu,
> GtkWidget *parent_menu_shell,
> GtkWidget *parent_menu_item,
> GtkMenuPositionFunc func,
> gpointer data,
> guint button,
> guint32 activate_time);
>
> This is normally done from your button_press_event handler; something
> like
>
> static gboolean
> my_button_press_event_handler (GtkWidget *widget,
> GdkEventButton *event,
> gpointer data)
> {
> if (event->button == 3) {
> GtkMenu *menu = create_popup_menu (...);
>
> gtk_menu_popup (menu, ...,
> event->button,
> event->time);
> return TRUE;
> }
> ...
> }
>
> The important part is that the application passes the event->time that
> coresponds from the actual button press that triggered the menu. GTK+
> uses this timestamp to take the difference between the press-time and
> the release-time to say, "did the user press-and-release quickly enough,
> so I should leave the menu up? Or did he press-drag-release slowly, so
> I should dismiss the menu?".
>
> The bug happens when an application gets lazy and instead of passing the
> correct timestamp, it just passes GDK_CURRENT_TIME or something like 0.
> GTK+ cannot take an accurate time difference then, and the menu seems to
> disappear easily.
>
> First we have to confirm if this is the same bug. Marco mentioned
> Thunderbird, which AFAIK is not a "normal" GTK+ application. So, we'll
> see.
>
> Federico
>
So I have to manually patch the source for every single GTK
application!?!?
--
To unsubscribe, e-mail: [email protected]
To contact the owner, e-mail: [email protected]