[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

gEDA-cvs: gaf.git: branch: master updated (1.7.0-20110116-48-g7f88749)



The branch, master has been updated
       via  7f88749446b61493e881ad6aeb0a82f909a8c0d7 (commit)
      from  0fffd6b16214cd05cba9de9e4d65d4e1ea2cf16a (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


=========
 Summary
=========

 gschem/src/x_event.c |   26 ++++++++++++++++++++++----
 1 files changed, 22 insertions(+), 4 deletions(-)


=================
 Commit Messages
=================

commit 7f88749446b61493e881ad6aeb0a82f909a8c0d7
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>

    gschem: Don't require select to drag objects
    
    This comes from watching users interacting with gschem and their
    clear expectations that objects can be dragged around the canvas
    without an explicit selection step first.
    
    When a mouse drag starts on non-selected object, starting dragging
    that object rather than forming a box selection.

:100644 100644 67989a1... a6a66eb... M	gschem/src/x_event.c

=========
 Changes
=========

commit 7f88749446b61493e881ad6aeb0a82f909a8c0d7
Author: Peter Clifton <pcjc2@xxxxxxxxx>
Commit: Peter Clifton <pcjc2@xxxxxxxxx>

    gschem: Don't require select to drag objects
    
    This comes from watching users interacting with gschem and their
    clear expectations that objects can be dragged around the canvas
    without an explicit selection step first.
    
    When a mouse drag starts on non-selected object, starting dragging
    that object rather than forming a box selection.

diff --git a/gschem/src/x_event.c b/gschem/src/x_event.c
index 67989a1..a6a66eb 100644
--- a/gschem/src/x_event.c
+++ b/gschem/src/x_event.c
@@ -718,6 +718,7 @@ gint x_event_motion(GtkWidget *widget, GdkEventMotion *event,
   int w_x, w_y;
   int unsnapped_wx, unsnapped_wy;
   int skip_event=0;
+  int do_move;
   GdkEvent *test_event;
 
   exit_if_null(w_current);
@@ -791,20 +792,37 @@ gint x_event_motion(GtkWidget *widget, GdkEventMotion *event,
     break;
 
     case(STARTSELECT):
-    if (!o_find_selected_object (w_current,
-                                 w_current->first_wx, w_current->first_wy)) {
+    /* Don't move anything if the shift key is pressed, that means
+     * the user definately wants to drag out a selection box.
+     */
+    do_move = 0;
+    if (!w_current->SHIFTKEY) {
+      /* If there is a selected object under the cursor, start moving it.
+       * If we don't find anything selected, look for an object we could
+       * select to start moving it.
+       */
+      if (o_find_selected_object (w_current, w_current->first_wx, w_current->first_wy) ||
+          (o_find_object (w_current,
+                          w_current->first_wx, w_current->first_wy, TRUE) &&
+           o_select_selected (w_current)))
+        do_move = 1;
+    }
+
+    if (!do_move) {
+      /* Drag out a selection box */
       if (o_select_box_start(w_current, unsnapped_wx, unsnapped_wy)) {
         w_current->event_state = SBOX;
         w_current->inside_action = 1;
       }
       break;
     } else {
-      /* Start the object movement */
+      /* Start moving the selected object(s) */
       o_move_start(w_current, w_x, w_y);
       w_current->event_state = ENDMOVE;
       w_current->inside_action = 1;
+      /* Fall through bottom of case to finish the move */
     }
-    /* Fall through */
+    /* Fall through to handle move */
     case(ENDMOVE):
     case(MOVE):
     if (w_current->inside_action)




_______________________________________________
geda-cvs mailing list
geda-cvs@xxxxxxxxxxxxxx
http://www.seul.org/cgi-bin/mailman/listinfo/geda-cvs