Remove OwnerGrabButtonMask from button entries for GDK_BUTTON_PRESS /
Fri Feb 18 14:37:29 2000 Owen Taylor <otaylor@redhat.com> * gdk/x11/gdkwindow-x11.c (gdk_event_mask_table): Remove OwnerGrabButtonMask from button entries for GDK_BUTTON_PRESS / GDK_BUTTON_RELEASE. * gtk/gtklayout.c (gtk_layout_realize): Always add GDK_SCROLL to the event mask (which will result in button/press release being added to the event mask on Unix) so scrolling works for layouts in scroll windows. * gdk/gdkevents.h (enum): Fix up GDK_ALL_EVENTS_MASK. Patch from Anders Carlsson <andersca@picard.andersnet> to add a scroll event. * gtk/testgtk.c (scroll_test_scroll): Added an example of mouse wheel scrolling to the "Test Scrolling" part of testgtk. * gtk/gtkwidget.h (struct _GtkWidgetClass): Added scroll_event signal. * gtk/gtkwidget.c: Added "scroll_event" GTK+ signal and matched it against GDK_SCROLL. * gtk/gtkrange.c (gtk_range_scroll_event): Updated to use the new way of mouse wheel scrolling. * gtk/gtkscrolledwindow.c (gtk_scrolled_window_scroll_event): Likewise. * gtk/gtkspinbutton.c (gtk_spin_button_scroll): Likewise. * gtk/gtkmain.c: Removed previous mouse wheel hack. * gdk/x11/gdkwindow-x11.c (gdk_event_mask_table): Added entry in gdk_event_mask_table. * gdk/x11/gdkevents-x11.c (gdk_event_translate): Added GdkEventScroll handler. * gdk/gdkevents.h: Added GdkEventScroll structure.
This commit is contained in:
@ -757,45 +757,10 @@ gtk_main_do_event (GdkEvent *event)
|
||||
gtk_widget_event (event_widget, event);
|
||||
break;
|
||||
|
||||
case GDK_SCROLL:
|
||||
case GDK_BUTTON_PRESS:
|
||||
case GDK_2BUTTON_PRESS:
|
||||
case GDK_3BUTTON_PRESS:
|
||||
/* We treat button 4-5 specially, assume we have
|
||||
* a MS-style scrollwheel mouse, and try to find
|
||||
* a plausible widget to scroll. We also trap
|
||||
* button 4-5 double and triple clicks here, since
|
||||
* they will be generated if the user scrolls quickly.
|
||||
*/
|
||||
if ((grab_widget == event_widget) &&
|
||||
(event->button.button == 4 || event->button.button == 5))
|
||||
{
|
||||
GtkWidget *range = NULL;
|
||||
GtkWidget *scrollwin;
|
||||
|
||||
if (GTK_IS_RANGE (event_widget))
|
||||
range = event_widget;
|
||||
else
|
||||
{
|
||||
scrollwin = gtk_widget_get_ancestor (event_widget,
|
||||
GTK_TYPE_SCROLLED_WINDOW);
|
||||
if (scrollwin)
|
||||
range = GTK_SCROLLED_WINDOW (scrollwin)->vscrollbar;
|
||||
}
|
||||
|
||||
if (range && GTK_WIDGET_VISIBLE (range))
|
||||
{
|
||||
if (event->type == GDK_BUTTON_PRESS)
|
||||
{
|
||||
GtkAdjustment *adj = GTK_RANGE (range)->adjustment;
|
||||
gfloat new_value = adj->value + ((event->button.button == 4) ?
|
||||
-adj->page_increment / 2:
|
||||
adj->page_increment / 2);
|
||||
new_value = CLAMP (new_value, adj->lower, adj->upper - adj->page_size);
|
||||
gtk_adjustment_set_value (adj, new_value);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
gtk_propagate_event (grab_widget, event);
|
||||
break;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user