When zooming, focus on the cursor.

This commit is contained in:
Přemysl Eric Janouch 2011-01-09 05:32:08 +01:00
parent e83cadd03b
commit 3aeedd37b6
1 changed files with 13 additions and 0 deletions

View File

@ -1129,9 +1129,15 @@ on_button_release (GtkWidget *widget, GdkEventButton *event, gpointer user_data)
static gboolean static gboolean
on_scroll (GtkWidget *widget, GdkEventScroll *event, gpointer user_data) on_scroll (GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
{ {
gdouble prev_x, prev_y;
gdouble new_x, new_y;
LdCanvas *self; LdCanvas *self;
self = LD_CANVAS (widget); self = LD_CANVAS (widget);
ld_canvas_widget_to_diagram_coords (self,
event->x, event->y, &prev_x, &prev_y);
switch (event->direction) switch (event->direction)
{ {
case GDK_SCROLL_UP: case GDK_SCROLL_UP:
@ -1144,6 +1150,13 @@ on_scroll (GtkWidget *widget, GdkEventScroll *event, gpointer user_data)
return FALSE; return FALSE;
} }
ld_canvas_widget_to_diagram_coords (self,
event->x, event->y, &new_x, &new_y);
/* Focus on the point under the cursor. */
self->priv->x += prev_x - new_x;
self->priv->y += prev_y - new_y;
update_adjustments (self); update_adjustments (self);
check_terminals (self, event->x, event->y); check_terminals (self, event->x, event->y);
gtk_widget_queue_draw (widget); gtk_widget_queue_draw (widget);