(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 canvas). 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 windowlets. 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. Questions? Cheers. Jeff -- +----------------------------------+ | J.W. Bizzaro | | | | http://bioinformatics.org/~jeff/ | | | | BIOINFORMATICS.ORG | | The Open Lab | | | | http://bioinformatics.org/ | +----------------------------------+