Code

add alt dragging for no change mode
authorbuliabyak <buliabyak@users.sourceforge.net>
Tue, 30 Oct 2007 18:10:41 +0000 (18:10 +0000)
committerbuliabyak <buliabyak@users.sourceforge.net>
Tue, 30 Oct 2007 18:10:41 +0000 (18:10 +0000)
src/ui/widget/rotateable.cpp
src/ui/widget/selected-style.cpp

index 9941c10f8f46257c10f3ee5465448a29904df4b4..8cc3c88e94bab46e2e0c663d993091148285b6d3 100644 (file)
@@ -50,25 +50,35 @@ bool Rotateable::on_click(GdkEventButton *event) {
 
 guint Rotateable::get_single_modifier(guint old, guint state) {
 
-               if (old == 0) {
+               if (old == 0 || old == 3) {
         if (state & GDK_CONTROL_MASK)
             return 1; // ctrl
         if (state & GDK_SHIFT_MASK)
             return 2; // shift
+        if (state & GDK_MOD1_MASK)
+            return 3; // alt
         return 0;
                } else {
-        if (!(state & GDK_CONTROL_MASK) && !(state & GDK_SHIFT_MASK))
-            return 0; // none
-        if (old == 1) 
+        if (!(state & GDK_CONTROL_MASK) && !(state & GDK_SHIFT_MASK)) {
+            if (state & GDK_MOD1_MASK)
+                return 3; // alt
+            else
+                return 0; // none
+        }
+        if (old == 1) {
             if (state & GDK_SHIFT_MASK && !(state & GDK_CONTROL_MASK))
                 return 2; // shift
-            else 
-                return 1;
-        if (old == 2) 
+            if (state & GDK_MOD1_MASK && !(state & GDK_CONTROL_MASK))
+               return 3; // alt
+            return 1;
+        }
+        if (old == 2) {
             if (state & GDK_CONTROL_MASK && !(state & GDK_SHIFT_MASK))
                 return 1; // ctrl
-            else 
-                return 2;
+            if (state & GDK_MOD1_MASK && !(state & GDK_SHIFT_MASK))
+               return 3; // alt
+            return 2;
+        }
         return old;
                }
 }
index 3c996f665bc6ccf31a8d90b99a8b6c1c32f6ec1e..6db4cb45c02cfefdb4ce64e9357d565edf98ae22 100644 (file)
@@ -1218,7 +1218,7 @@ RotateableSwatch::do_motion(double by, guint modifier) {
     if (parent->_mode[fillstroke] != SS_COLOR) 
         return;
 
-    if (!cr_set) {
+    if (!cr_set && modifier != 3) {
         GtkWidget *w = GTK_WIDGET(gobj());
 
         GdkBitmap *bitmap = NULL;
@@ -1251,9 +1251,14 @@ RotateableSwatch::do_motion(double by, guint modifier) {
     }
 
     float hsl[3];
-    double diff = color_adjust(hsl, by, cc, modifier);
+    double diff = 0;
+    if (modifier != 3) {
+        diff = color_adjust(hsl, by, cc, modifier);
+    }
 
-    if (modifier == 2) { // saturation
+    if (modifier == 3) { // do nothing
+
+    } else if (modifier == 2) { // saturation
         sp_document_maybe_done (sp_desktop_document(parent->getDesktop()), undokey, 
                                 SP_VERB_DIALOG_FILL_STROKE, ("Adjust saturation"));
         double ch = hsl[1];
@@ -1279,7 +1284,9 @@ RotateableSwatch::do_release(double by, guint modifier) {
         return;
 
     float hsl[3];
-    color_adjust(hsl, by, startcolor, modifier);
+    if (modifier != 3) {
+        color_adjust(hsl, by, startcolor, modifier);
+    }
 
     if (cr_set) {
         GtkWidget *w = GTK_WIDGET(gobj());
@@ -1291,7 +1298,8 @@ RotateableSwatch::do_release(double by, guint modifier) {
         cr_set = false;
     }
 
-    if (modifier == 2) { // saturation
+    if (modifier == 3) { // nothing
+    } else if (modifier == 2) { // saturation
         sp_document_maybe_done (sp_desktop_document(parent->getDesktop()), undokey, 
                                 SP_VERB_DIALOG_FILL_STROKE, ("Adjust saturation"));