gtk_drawing_area and scroll events



Hi,

currently I'm trying to add support for wheel mice to an application I'm
maintaining. Due to the structure, I'd prefer to process the wheel
events as button press events.

Here is the code for creating the widget in question:

/*----- Event handlers ------*/

static gint draw_scroll_event(
 GtkWidget *widget,
 GdkEventScroll *event,
 wDraw_p bd)
{
 return FALSE;
}


static gint draw_button_event(
 GtkWidget *widget,
 GdkEventButton *event,
 wDraw_p bd )
{

 switch ( event->button ) {
  case 1: /* left mouse button */
   ...
   break;
  case 3: /* right mouse button */
   ...
   break;
  case 4: /* mouse wheel up */
   ...
   break;
  case 5: /* mouse wheel down */
   ...
   break;
  }

  return TRUE;
}

/*---- widget creation ----*/

bd->widget = gtk_drawing_area_new();
gtk_widget_set_usize( GTK_WIDGET(bd->widget), width, height );

...
gtk_signal_connect (GTK_OBJECT (bd->widget), "button_press_event",

  (GtkSignalFunc) draw_button_event, bd);
gtk_signal_connect (GTK_OBJECT (bd->widget), "button_release_event",
  (GtkSignalFunc) draw_button_event, bd);
/* for testing purposes only */
gtk_signal_connect (GTK_OBJECT (bd->widget), "scroll_event",
  (GtkSignalFunc) draw_scroll_event, bd);

...

GTK_WIDGET_SET_FLAGS(GTK_WIDGET(bd->widget), GTK_CAN_FOCUS);
gtk_widget_set_events (bd->widget, GDK_EXPOSURE_MASK                         |
GDK_LEAVE_NOTIFY_MASK   
| GDK_BUTTON_PRESS_MASK 
| GDK_BUTTON_RELEASE_MASK
| GDK_POINTER_MOTION_MASK
| GDK_POINTER_MOTION_HINT_MASK
| GDK_KEY_PRESS_MASK
| GDK_KEY_RELEASE_MASK );

gtk_container_add( GTK_CONTAINER(parent->widget), bd->widget );
gtk_widget_set_uposition( bd->widget, bd->realX, bd->realY );

gtk_widget_realize( bd->widget );
...

/*---- end of code ----*/

With that code scroll_event are emitted when the mouse wheel is turned,
but why? I was under the impression that I disabled the scroll events
with my call to gtk_widget_set_events. If that is not the correct way to
do that, how can I achieve the desired result, ie. turning off the
scroll events and turning on the button events for te mouse wheel activity?

Thanks for any hints!

Regards
Martin






[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]