Thanks Sam, for replying to my question and for pointing me in the right
direction.

I didn't see the inheritance structure before and everything makes a little
more sense now.

You are correct that the code that handles drag events does not look at
which button is pressed. The LauncherIcon class does handle clicks and
quicklist creation, while drag events are handled by the Launcher class. If
I add a check in the Launcher class to consider which button is pressed, I
can prevent the right mouse button from initiating drags.

Unfortunately, whether or not the launcher icon is dragged, if the mouse is
initially depressed over a launcher icon, the quicklist ignores or doesn't
receive events until the mouse is released.

I guess that I am halfway to a functioning solution: The right mouse doesn't
initiate launcher or icon drags, but I can't yet open the quicklist and make
a selection in one click.

Josh


On Sun, Jan 2, 2011 at 8:12 PM, Sam Spilsbury <[email protected]> wrote:

> On Wed, Dec 29, 2010 at 12:27 PM, Josh Headapohl <[email protected]>
> wrote:
> > Hello, I'm working on bug 688830 in Unity, which is about letting the
> user
> > select a quicklist item with just one right click. Currently, you have to
> > let go of the mouse button first or you will just start dragging the
> > launcher icon. This behavior is annoying and the bug is tagged as
> bite-size
> > so I decided to try to help fix it.
> > Dieder Roche commented it could be "bitesize with good mentorship," so I
> > hope I can get a little assistance here in figuring out Unity's technical
> > design. Okay, maybe more than the design. :) There's a lot to take in.
> > I see that when there is an OnMouseDown signal emitted, a Launcher
> instance
> > will handle it, and I can see where later in the chain of method calls,
> the
> > quicklist menu item is created and shown in LauncherIcon::RecvMouseDown.
> > What I haven't found yet is what sends the OnMouseDown signal in the
> first
> > place.
> > For example, in Launcher.cpp line 186,
> > OnMouseDown.connect  (sigc::mem_fun (this, &Launcher::RecvMouseDown));
> > What is OnMouseDown and where is it instantiated? Does it happen outside
> of
> > Unity or am I just overlooking the place where it is created?
> > I think if I could see a higher level source of input events (or do I
> mean
> > lower?) , if would be easier to see what to do with them further down the
> > line.
>
> The launcher class has a fairly long inheritance tree:
>
> InputArea -> View -> Launcher.
>
> InputArea is found in nux/Nux/InputArea.h/cpp . It handles raw events
> (either from X11 or elsewhere) and makes the OnMouseDown etc signals
> actually emit () once appropriate events are recieved.
>
> I have not looked at this particular code in detail, but I would
> assume  that whatever LauncherIcon::OnMouseDown is connected to
> handles the quicklist creation, button clicks and dragging - although
> the code that does the dragging isn't checking which button is
> actually pressed.
>
> Regards,
>
> Sam
>
> > Also, if it sounds like I'm approaching the whole problem the wrong way,
> > feel free to point me in a new direction.
> > Thanks,
> > Josh
> > https://bugs.launchpad.net/unity/+bug/688830
> > _______________________________________________
> > Mailing list: https://launchpad.net/~ayatana-dev
> > Post to     : [email protected]
> > Unsubscribe : https://launchpad.net/~ayatana-dev
> > More help   : https://help.launchpad.net/ListHelp
> >
> >
>
>
>
> --
> Sam Spilsbury
>
_______________________________________________
Mailing list: https://launchpad.net/~ayatana-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~ayatana-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to