GtkActionGroup *action_group;
+ gboolean pan_move;
gint pan_x, pan_y;
guint draw_image_width, draw_image_height;
vw->modified = FALSE;
vw->only_updating_coord_mode_ui = FALSE;
-
+
+ vw->pan_move = FALSE;
vw->pan_x = vw->pan_y = -1;
vw->draw_image_width = DRAW_IMAGE_DEFAULT_WIDTH;
vw->draw_image_height = DRAW_IMAGE_DEFAULT_HEIGHT;
if ( ! new_trigger )
; /* do nothing -- have to redraw everything. */
- else if ( (old_trigger != new_trigger) || !vik_coord_equals(&old_center, &vw->trigger_center) )
+ else if ( (old_trigger != new_trigger) || !vik_coord_equals(&old_center, &vw->trigger_center) || (new_trigger->type == VIK_LAYER_AGGREGATE) )
vik_viewport_set_trigger ( vw->viking_vvp, new_trigger ); /* todo: set to half_drawn mode if new trigger is above old */
else
vik_viewport_set_half_drawn ( vw->viking_vvp, TRUE );
static void vik_window_pan_click (VikWindow *vw, GdkEventButton *event)
{
/* set panning origin */
+ vw->pan_move = FALSE;
vw->pan_x = (gint) event->x;
vw->pan_y = (gint) event->y;
}
static void vik_window_pan_move (VikWindow *vw, GdkEventMotion *event)
{
if ( vw->pan_x != -1 ) {
- vik_viewport_pan_sync ( vw->viking_vvp, event->x - vw->pan_x, event->y - vw->pan_y );
+ vik_viewport_set_center_screen ( vw->viking_vvp, vik_viewport_get_width(vw->viking_vvp)/2 - event->x + vw->pan_x,
+ vik_viewport_get_height(vw->viking_vvp)/2 - event->y + vw->pan_y );
+ draw_update ( vw );
+ vw->pan_move = TRUE;
+ vw->pan_x = event->x;
+ vw->pan_y = event->y;
}
}
static void vik_window_pan_release ( VikWindow *vw, GdkEventButton *event )
{
- if ( ABS(vw->pan_x - event->x) <= 1 && ABS(vw->pan_y - event->y) <= 1 )
+ if ( vw->pan_move == FALSE )
vik_viewport_set_center_screen ( vw->viking_vvp, vw->pan_x, vw->pan_y );
else
vik_viewport_set_center_screen ( vw->viking_vvp, vik_viewport_get_width(vw->viking_vvp)/2 - event->x + vw->pan_x,
g_signal_emit ( G_OBJECT(self), window_signals[VW_OPENWINDOW_SIGNAL], 0, filenames );
}
else
- vik_window_open_file ( self, filename, TRUE );
+ vik_window_open_file ( self, path, TRUE );
g_free ( path );
}