gdk: Add delta_x/y to scroll events
gdk_event_get_scroll_deltas() can be used to retrieve those values on smooth scroll events.
This commit is contained in:
		 Michael Natterer
					Michael Natterer
				
			
				
					committed by
					
						 Matthias Clasen
						Matthias Clasen
					
				
			
			
				
	
			
			
			 Matthias Clasen
						Matthias Clasen
					
				
			
						parent
						
							7b48a3c0bd
						
					
				
				
					commit
					0efbbc6435
				
			| @ -788,6 +788,7 @@ gdk_event_get_keycode | |||||||
| gdk_event_get_keyval | gdk_event_get_keyval | ||||||
| gdk_event_get_root_coords | gdk_event_get_root_coords | ||||||
| gdk_event_get_scroll_direction | gdk_event_get_scroll_direction | ||||||
|  | gdk_event_get_scroll_deltas | ||||||
| gdk_event_get_state | gdk_event_get_state | ||||||
| gdk_event_get_time | gdk_event_get_time | ||||||
| GdkEventSequence | GdkEventSequence | ||||||
|  | |||||||
| @ -165,6 +165,7 @@ gdk_event_get_keyval | |||||||
| gdk_event_get_root_coords | gdk_event_get_root_coords | ||||||
| gdk_event_get_screen | gdk_event_get_screen | ||||||
| gdk_event_get_scroll_direction | gdk_event_get_scroll_direction | ||||||
|  | gdk_event_get_scroll_deltas | ||||||
| gdk_event_get_source_device | gdk_event_get_source_device | ||||||
| gdk_event_get_state | gdk_event_get_state | ||||||
| gdk_event_get_time | gdk_event_get_time | ||||||
|  | |||||||
| @ -471,6 +471,8 @@ gdk_event_new (GdkEventType type) | |||||||
|       new_event->scroll.y = 0.; |       new_event->scroll.y = 0.; | ||||||
|       new_event->scroll.x_root = 0.; |       new_event->scroll.x_root = 0.; | ||||||
|       new_event->scroll.y_root = 0.; |       new_event->scroll.y_root = 0.; | ||||||
|  |       new_event->scroll.delta_x = 0.; | ||||||
|  |       new_event->scroll.delta_y = 0.; | ||||||
|       break; |       break; | ||||||
|     case GDK_ENTER_NOTIFY: |     case GDK_ENTER_NOTIFY: | ||||||
|     case GDK_LEAVE_NOTIFY: |     case GDK_LEAVE_NOTIFY: | ||||||
| @ -1207,6 +1209,52 @@ gdk_event_get_scroll_direction (const GdkEvent *event, | |||||||
|   return fetched; |   return fetched; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * gdk_event_get_scroll_deltas: | ||||||
|  |  * @event: a #GdkEvent | ||||||
|  |  * @delta_x: return location for X delta | ||||||
|  |  * @delta_y: return location for Y delta | ||||||
|  |  * | ||||||
|  |  * Retrieves the scroll deltas from a #GdkEvent | ||||||
|  |  * | ||||||
|  |  * Returns: %TRUE if the event contains smooth scroll information | ||||||
|  |  * | ||||||
|  |  * Since: 3.4 | ||||||
|  |  **/ | ||||||
|  | gboolean | ||||||
|  | gdk_event_get_scroll_deltas (const GdkEvent *event, | ||||||
|  |                              gdouble        *delta_x, | ||||||
|  |                              gdouble        *delta_y) | ||||||
|  | { | ||||||
|  |   gboolean fetched = TRUE; | ||||||
|  |   gdouble dx = 0.0; | ||||||
|  |   gdouble dy = 0.0; | ||||||
|  |  | ||||||
|  |   switch (event->type) | ||||||
|  |     { | ||||||
|  |     case GDK_SCROLL: | ||||||
|  |       if (event->scroll.direction == GDK_SCROLL_SMOOTH) | ||||||
|  |         { | ||||||
|  |           dx = event->scroll.delta_x; | ||||||
|  |           dy = event->scroll.delta_y; | ||||||
|  |         } | ||||||
|  |       else | ||||||
|  |         fetched = FALSE; | ||||||
|  |       break; | ||||||
|  |     default: | ||||||
|  |       fetched = FALSE; | ||||||
|  |       break; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   if (delta_x) | ||||||
|  |     *delta_x = dx; | ||||||
|  |  | ||||||
|  |   if (delta_y) | ||||||
|  |     *delta_y = dy; | ||||||
|  |  | ||||||
|  |   return fetched; | ||||||
|  | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * gdk_event_get_axis: |  * gdk_event_get_axis: | ||||||
|  * @event: a #GdkEvent |  * @event: a #GdkEvent | ||||||
|  | |||||||
| @ -759,6 +759,8 @@ struct _GdkEventScroll | |||||||
|   GdkScrollDirection direction; |   GdkScrollDirection direction; | ||||||
|   GdkDevice *device; |   GdkDevice *device; | ||||||
|   gdouble x_root, y_root; |   gdouble x_root, y_root; | ||||||
|  |   gdouble delta_x; | ||||||
|  |   gdouble delta_y; | ||||||
| }; | }; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @ -1203,6 +1205,11 @@ gboolean  gdk_event_get_keycode         (const GdkEvent *event, | |||||||
| GDK_AVAILABLE_IN_3_2 | GDK_AVAILABLE_IN_3_2 | ||||||
| gboolean gdk_event_get_scroll_direction (const GdkEvent *event, | gboolean gdk_event_get_scroll_direction (const GdkEvent *event, | ||||||
|                                          GdkScrollDirection *direction); |                                          GdkScrollDirection *direction); | ||||||
|  | GDK_AVAILABLE_IN_3_4 | ||||||
|  | gboolean  gdk_event_get_scroll_deltas   (const GdkEvent *event, | ||||||
|  |                                          gdouble         *delta_x, | ||||||
|  |                                          gdouble         *delta_y); | ||||||
|  |  | ||||||
| gboolean  gdk_event_get_axis            (const GdkEvent  *event, | gboolean  gdk_event_get_axis            (const GdkEvent  *event, | ||||||
|                                          GdkAxisUse       axis_use, |                                          GdkAxisUse       axis_use, | ||||||
|                                          gdouble         *value); |                                          gdouble         *value); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user