1.1 --- a/graph_displayer_canvas-event.cc Wed Jan 10 14:56:16 2007 +0000
1.2 +++ b/graph_displayer_canvas-event.cc Fri Feb 02 10:13:33 2007 +0000
1.3 @@ -95,6 +95,45 @@
1.4 return actual_tool;
1.5 }
1.6
1.7 +bool GraphDisplayerCanvas::scrollEventHandler(GdkEvent* e)
1.8 +{
1.9 + bool handled=false;
1.10 + if(e->type==GDK_SCROLL)
1.11 + {
1.12 +
1.13 + //pointer shows this win point before zoom
1.14 + XY win_coord(((GdkEventScroll*)e)->x, ((GdkEventScroll*)e)->y);
1.15 +
1.16 + //the original scroll settings
1.17 + int scroll_offset_x, scroll_offset_y;
1.18 + get_scroll_offsets(scroll_offset_x, scroll_offset_y);
1.19 +
1.20 + //pointer shows this canvas point before zoom
1.21 + XY canvas_coord;
1.22 + window_to_world(win_coord.x, win_coord.y, canvas_coord.x, canvas_coord.y);
1.23 +
1.24 + if(((GdkEventScroll*)e)->direction) //IN
1.25 + {
1.26 + zoomIn();
1.27 + }
1.28 + else
1.29 + {
1.30 + zoomOut();
1.31 + }
1.32 +
1.33 + //pointer shows this window point after zoom
1.34 + XY post_win_coord;
1.35 + world_to_window(canvas_coord.x, canvas_coord.y, post_win_coord.x, post_win_coord.y);
1.36 +
1.37 + //we have to add the difference between new and old window point to original scroll offset
1.38 + scroll_to(scroll_offset_x+(int)(post_win_coord.x-win_coord.x),scroll_offset_y+(int)(post_win_coord.y-win_coord.y));
1.39 +
1.40 + //no other eventhandler is needed
1.41 + handled=true;
1.42 + }
1.43 + return handled;
1.44 +}
1.45 +
1.46 bool GraphDisplayerCanvas::moveEventHandler(GdkEvent* e)
1.47 {
1.48 static Gnome::Canvas::Text *coord_text = 0;