Code

Refactoring SPColor to C++ and removing legacy CMYK implementation
[inkscape.git] / src / event-context.cpp
index 47c5fac269ed7e2d6b4185bd6c40e583dfbd85a0..7e14d5a492f4106dcdc7f2c97dd37a8487883b23 100644 (file)
@@ -282,14 +282,6 @@ sp_toggle_selector(SPDesktop *dt)
 static gdouble accelerate_scroll(GdkEvent *event, gdouble acceleration, SPCanvas *canvas)
 {
     guint32 time_diff = ((GdkEventKey *) event)->time - scroll_event_time;
-    glong slowest_buffer = canvas->slowest_buffer / 1000; // the buffer time is in usec, but event time is in msec
-
-    // reduce time interval by the time it took to paint slowest buffer, 
-    // so that acceleration does not hiccup on complex slow-rendering drawings
-    if ((guint32) slowest_buffer <= time_diff)
-        time_diff -= slowest_buffer;
-    else
-        time_diff = 0;
 
     /* key pressed within 500ms ? (1/2 second) */
     if (time_diff > 500 || event->key.keyval != scroll_keyval) {
@@ -440,6 +432,8 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context,
                 } else {
                     Inkscape::Rubberband::get()->start(desktop, motion_dt);
                 } 
+                if (zoom_rb == 2)
+                    gobble_motion_events(GDK_BUTTON2_MASK);
             }
             break;
         case GDK_BUTTON_RELEASE:
@@ -600,6 +594,9 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context,
             }
             break;
         case GDK_SCROLL:
+        {
+            bool ctrl = (event->scroll.state & GDK_CONTROL_MASK);
+            bool wheelzooms = (prefs_get_int_attribute("options.wheelzooms","value", 0) == 1);
             /* shift + wheel, pan left--right */
             if (event->scroll.state & GDK_SHIFT_MASK) {
                 switch (event->scroll.direction) {
@@ -614,7 +611,7 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context,
                 }
 
                 /* ctrl + wheel, zoom in--out */
-            } else if (event->scroll.state & GDK_CONTROL_MASK) {
+            } else if ((ctrl && !wheelzooms) || (!ctrl && wheelzooms)) {
                 double rel_zoom;
                 switch (event->scroll.direction) {
                     case GDK_SCROLL_UP:
@@ -650,6 +647,7 @@ static gint sp_event_context_private_root_handler(SPEventContext *event_context,
                 }
             }
             break;
+        }
         default:
             break;
     }