After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 82128 - GtkButton doesn't get release when pointer grab in effect
GtkButton doesn't get release when pointer grab in effect
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: .General
2.0.x
Other Linux
: Normal minor
: Medium fix
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2002-05-17 22:07 UTC by Ben Liblit
Modified: 2015-08-08 13:12 UTC
See Also:
GNOME target: ---
GNOME version: 2.9/2.10



Description Ben Liblit 2002-05-17 22:07:35 UTC
Buttons in the logout dialog do not disarm properly when the user
starts a click but then has a change of heart.  It's easier to see
than to describe.  Try the following:

   1. Select "Log out" from some panel menu.

   2. In the "Really log out?" dialog, move the mouse pointer inside
      the "Cancel" button.

   3. Press mouse button 1, but do not release yet.  Notice that the
      "Cancel" button appears armed (pressed in).  This is correct.

   4. While keeping mouse button 1 down, move the mouse pointer
      outside of the "Cancel" button.  Notice that the "Cancel" button
      appears disarmed (not pressed in).  This is correct.

   5. While the mouse pointer is outside of the "Cancel" button,
      release mouse button 1.

   6. Move the mouse pointer back inside the "Cancel" button.  Do not
      press mouse button 1.  Observe that the "Cancel" button appears
      armed (pressed in).  This is incorrect.

My guess is that someone's playing tricks with X events or something
like that.
Comment 1 Ben Liblit 2002-05-17 22:09:07 UTC
Oops, why did I file this as a gdm bug?  This is clearly a
gnome-session bug.  My bad.
Comment 2 Elijah Newren 2002-11-24 00:09:40 UTC
Owen: David Kennedy (tinytoad) on irc.gnome.org#bugs said that this
bug reminded him of a gtk bug he read recently;  He said he thinks
that this may be a gtk bug and that you would know.  Is it?

I can duplicate on a Mandrake 9 system (which uses
gnome-session-2.0.5).  So, changing version from 1.5.x to 2.0.x. 
Also, changing severity to trivial (perhaps it's ugly and annoying,
but it doesn't seem to be notticed by very many) and adding bugsquad
keyword.
Comment 3 Owen Taylor 2002-11-24 01:41:03 UTC
The problem here is that while there is a pointer grab
in effect (gdk_pointer_grab()) the normal implicit grab
that happens on mouse presses doesn't happen, so the
button doesn't get the button release.

It's one of a class of bugs that occur because of this
flaw in the X protocol; there are things that could
be done to fix this in GDK... basically emulate the
implicit grab ... but would definitely be Hard.

Feel free to assign to GTK+, but I doubt it will be
fixed in the forseeable future.

Comment 4 Elijah Newren 2002-11-24 02:16:25 UTC
Moving to gtk+, as per Owen's comment.
Comment 5 Federico Mena Quintero 2004-12-14 23:50:42 UTC
Please test this again with the latest in the gtk-2-4 or HEAD branches; I think
it is fixed there.
Comment 6 Owen Taylor 2004-12-15 02:49:15 UTC
It's not fixed .... this is about pointer grabs killing implicit grabs, not 
gtk_grab_add() shadowing events.
Comment 7 Alexander “weej” Jones 2007-09-26 00:31:51 UTC
I think this is affecting Totem. Try dragging the progress slider, but move your mouse to the status bar (make sure you don't leave the window). Release the mouse pointer, and observe that as you move the mouse, the progress slider carries on moving!

If it's not this bug, I'll open another.
Comment 8 David Liang 2009-04-10 07:05:39 UTC
The original bug was fixed, I checked it with gtk-2.14.4.
Comment#7 is not this bug,  so I think the bug can be closed.

About Comment#7, I think it may not be a bug.
All of the progress bar can be moved while dragging outside it and
it is good for the users as it is hard to keep the dragging so vertical
or horizontal.