[Pipet Devel] mouse buttons (was: excerpt from CHANGES)

J.W. Bizzaro bizzaro at geoserve.net
Wed Feb 9 23:46:13 EST 2000

(I'm going to split this discussion up into several messages.)

Brad Chapman wrote:
>     I have a question on this for you. I would like to add it so that
> you can also drag and drop loci from the workspace into a container
> (as opposed to out of a container onto the workspace). This would also
> allow us to drag loci between different workspaces (notice now how you
> can drag a loci out of a container into any workspace inside the main
> workspace. Pretty neat, and I didn't even have to try to do this). My
> question is, what kind of button press or button press/key stroke
> combo should I use to do this? I was thinking Shift:button1 click
> or Control:button1 click or something like that--do you have a
> preference/opinion on this?

Okay, I recognized a while back that we would have a problem with DnD.  We
simply have a conflict between the way X DnD works and how my own workspace
DnD works.  From my understanding, dragged objects in X 'leave' their parent
window so that they can be dropped anywhere in the X environment.  However, I
already set the workspace up to allow the (nifty) dragging of loci (icons,
etc.) with connectors attached.  This, my own form of DnD, is limited to the
workspace (Gnome canvas) itself AND WILL NOT EVEN WORK BETWEEN WINDOWLETS
(because each X widget is usually its own little X window, including the

So, you can see why Brad has a problem doing DnD _from_ the workspace, _to_ a
container windowlet.  When you drag a locus toward a container, you're using
my workspace DnD and not X DnD, and the locus simply won't go across the
boundary of the windowlet (enter another X window).

The obvious solution is to switch off the workspace DnD and use X DnD.  This
is why Brad suggested using a combination of a key press with a mouse button
press.  But I want to make DnD consistent for movement both to and from

I therefore propose that my own workspace DnD be controlled via mouse button 2
(middle) press, and have button 1 (left) press control X DnD.  I think this is
more standard to how X applications work.

So, this is what each button should do:

BUTTON 1 (left)

Event                 Over                  Results in
-----                 ----                  ----------
Click                 Locus                 Select locus

Click                 Workspace             Deselect all loci
                                            (select workspace)

Press+DnD             Locus                 X Windows DnD of locus

Press+DnD             Workspace             Rectilinear select

Double click          Locus                 Open/close windowlet

Double click          Workspace             (nothing)

BUTTON 2 (middle)

Event                 Over                  Results in
-----                 ----                  ----------
Click                 Locus                 (nothing)

Click                 Workspace             (nothing)

Press+DnD             Locus                 DnD of locus, limited
                                            to workspace

Press+DnD             Workspace             'DnD' (scroll) of workspace
                                            (see Adobe Acrobat Reader)

Double click          Locus                 (nothing)

Double click          Workspace             (nothing)

BUTTON 3 (right)

Event                 Over                  Results in
-----                 ----                  ----------
Click                 Locus                 Pop-up menu

Click                 Workspace             Pop-up menu

Press+DnD             Locus                 (nothing)

Press+DnD             Workspace             (nothing)

Double click          Locus                 (nothing)

Double click          Workspace             (nothing)

Now when we do a button 1 (left) X DnD of a locus within or onto the
workspace, we will need to know where (xy) it is dropped, and then the locus
(icon, etc.) and connectors will be moved there.

Also, Brad, I was planning on having custom cursors with this Gtk interface. 
Look in an older loci-core module for cursor.xpm.  I like the way Adobe
Acroread has the hand cursor (especially how you can 'grab' the background to
scroll it), and I want to do something like that for Loci.  Newer versions of
gnome-libs will have functions for selecting custom cursors, so we can
implement this then.


                      |           J.W. Bizzaro           |
                      |                                  |
                      | http://bioinformatics.org/~jeff/ |
                      |                                  |
                      |        BIOINFORMATICS.ORG        |
                      |           The Open Lab           |
                      |                                  |
                      |    http://bioinformatics.org/    |

More information about the Pipet-Devel mailing list