X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fworkarea.cpp;h=e783687b920db15578bc8b45a12afe927e098536;hb=63cef3f0911e19c6d38c54b7e03da3c88775d998;hp=72acd9040c0608fd0c83dd3867d09ab965035bfb;hpb=536bceae2dd6a33168fb41511d5263b697d2d32f;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/workarea.cpp b/synfig-studio/trunk/src/gtkmm/workarea.cpp index 72acd90..e783687 100644 --- a/synfig-studio/trunk/src/gtkmm/workarea.cpp +++ b/synfig-studio/trunk/src/gtkmm/workarea.cpp @@ -6,8 +6,8 @@ ** ** \legal ** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley -** Copyright 2006 Yue Shi Lai -** Copyright (c) 2007 Chris Moore +** Copyright (c) 2006 Yue Shi Lai +** Copyright (c) 2007, 2008 Chris Moore ** ** This package is free software; you can redistribute it and/or ** modify it under the terms of the GNU General Public License as @@ -1199,8 +1199,6 @@ WorkArea::on_drawing_area_event(GdkEvent *event) bool is_mouse(false); Gdk::ModifierType modifier(Gdk::ModifierType(0)); - drawing_area->grab_focus(); - // Handle input stuff if( event->any.type==GDK_MOTION_NOTIFY || @@ -1220,6 +1218,7 @@ WorkArea::on_drawing_area_event(GdkEvent *event) { device=event->button.device; modifier=Gdk::ModifierType(event->button.state); + drawing_area->grab_focus(); } // Make sure we recognize the device @@ -1348,8 +1347,11 @@ WorkArea::on_drawing_area_event(GdkEvent *event) selected_bezier=find_bezier(mouse_pos,radius,&bezier_click_pos); - if(duck && duck->get_editable()) + if(duck) { + if (!duck->get_editable()) + return true; + //get_selected_duck()->signal_user_click(0)(); //if(clicked_duck)clicked_duck->signal_user_click(0)(); @@ -1922,6 +1924,9 @@ WorkArea::refresh_dimension_info() pw=canvaswidth/w; ph=canvasheight/h; + Duckmatic::set_flip_x(pw < 0); + Duckmatic::set_flip_y(ph > 0); + scrollx_adjustment.set_page_increment(abs(get_grid_size()[0])); scrollx_adjustment.set_step_increment(abs(pw)); scrollx_adjustment.set_lower(-abs(canvaswidth)); @@ -2256,12 +2261,10 @@ studio::WorkArea::async_update_preview() int w=(int)(desc.get_w()*zoom); int h=(int)(desc.get_h()*zoom); - // ensure that the size we draw is a whole number of pixels in each dimension - if (low_resolution) - { - if (w % low_res_pixel_size) w = (w/low_res_pixel_size+1)*low_res_pixel_size; - if (h % low_res_pixel_size) h = (h/low_res_pixel_size+1)*low_res_pixel_size; - } + // ensure that the size we draw is at least one pixel in each dimension + int min_size = low_resolution ? low_res_pixel_size : 1; + if (w < min_size) w = min_size; + if (h < min_size) h = min_size; // Setup the description parameters desc.set_antialias(1);