Closed
Bug 16766
Opened 25 years ago
Closed 24 years ago
xpPopups and context menus can't be used with a single drag
Categories
(Core :: XUL, defect, P2)
Tracking
()
VERIFIED
FIXED
mozilla0.8
People
(Reporter: mpt, Assigned: blizzard)
References
Details
(Whiteboard: [nsbeta3-])
Attachments
(3 files)
1.30 KB,
patch
|
Details | Diff | Splinter Review | |
3.73 KB,
patch
|
Details | Diff | Splinter Review | |
3.34 KB,
patch
|
Details | Diff | Splinter Review |
To use a context menu, you need to Ctrl+click to activate the menu (click-and-
hold doesn't work, but that's probably a separate bug), and then you need
*another* click to select the item.
OBSERVED ON
apprunner for MacOS, 1999-10-18 build
TO REPRODUCE
In apprunner, Ctrl+drag in a Web page, in an attempt to bring up the context menu
and select an item.
WHAT HAPPENS
The context menu appears, but the mouse drag selects text (and may even scroll
the Web page) under the menu. The mousebutton must be released before the menu
starts highlighting items in response to the mouse pointer, and another click is
required to actually select an item.
WHAT SHOULD HAPPEN
The context menu should take focus from its parent window, and a menu item should
be selectable by letting the mouse button go (with or without Ctrl still down)
over the item. So a context menu should be usable with two clicks (as currently),
or with one drag.
-- mpt (additional keywords: popup, right-click)
Comment 1•25 years ago
|
||
reoproduced in today's opt bits, reassigning to saari as p3 for m12
Assignee: trudelle → saari
Target Milestone: M12
Comment 2•25 years ago
|
||
mass-moving all m12 bugs to m13
Updated•25 years ago
|
QA Contact: claudius → elig
Comment 3•25 years ago
|
||
[Contextual menu bug --- QA Assigning to self.]
Updated•25 years ago
|
Component: XP Toolkit/Widgets → XPMenus
QA Contact: elig → sairuh
Comment 4•25 years ago
|
||
reassigned QA contact to me & updated component.
Updated•25 years ago
|
Target Milestone: M13 → M15
Reporter | ||
Updated•25 years ago
|
OS: Mac System 8.5 → All
Hardware: Macintosh → All
Reporter | ||
Comment 5•25 years ago
|
||
Changing OSes to All. This isn't working on Windows either (build 1999122308),
although Windows doesn't have the focus problem.
Updated•25 years ago
|
Assignee: saari → pinkerton
Comment 6•25 years ago
|
||
ooh, this one is going to suck.
Taking menu/popup bugs.
BULK MOVE: Changing component from XP Menus to XP Toolkit/Widgets: Menus. XP
Menus component will be deleted.
Component: XPMenus → XP Toolkit/Widgets: Menus
Reporter | ||
Comment 9•25 years ago
|
||
pinkerton: it may be a good idea to fix bug 17159 before this bug, to avoid
possible duplication of effort.
Summary: Context menus can't be used with a single drag → [4.xP] Context menus can't be used with a single drag
Comment 10•25 years ago
|
||
From bug 21549, the same behaviour is being requested (and exists in 4.x)
for right-click-drag-mouseup on other platforms as for ctrl-click-drag-mouseup
on a Mac, to select an item on a control menu.
Reporter | ||
Comment 12•25 years ago
|
||
*** Bug 18726 has been marked as a duplicate of this bug. ***
Comment 13•25 years ago
|
||
*** Bug 19232 has been marked as a duplicate of this bug. ***
Reporter | ||
Comment 15•25 years ago
|
||
*** Bug 25211 has been marked as a duplicate of this bug. ***
Comment 16•25 years ago
|
||
This one doesn't look like it would be too difficult to address. Unfortunately,
I've looked through the code for NS_MOUSE_RBUTTON_DOWN to find where the context
menu is instantiated, but I haven't found much. Can anyone give me a hint as to
where to start?
Updated•25 years ago
|
Summary: [4.xP] Context menus can't be used with a single drag → Context menus can't be used with a single drag
Comment 17•25 years ago
|
||
Well, I'm going to have to pretty much give up on this one. I've tracked the
popup menu process through from, as far as I can tell, start to finish, and
everything that I'm watching happens before MouseUp. All I'm trying to find is
what happens on MouseUp that sets the capture to the context menu instead of the
underlying window, but I've not had much luck.
Comment 18•25 years ago
|
||
I fixed this on mac by munging with our event dispatcher. It was always sending
the mousemoves to the window with the mousedown, which was obviously not the case
anymore when a context menu (or any xul popup) popped up. Just FYI.
Comment 19•25 years ago
|
||
Is this a Mac-specific fix, or will it apply to all platforms?
Comment 20•25 years ago
|
||
each platform has platform-specific event dispatch problems. i fixed them on mac,
so now this bug is linux/win32 only.
Comment 21•25 years ago
|
||
Cool. If you give me a hint as to where to start looking, I'll see if I can
knock this off on Win32. Oh, and if you want to give me a brief pointer to what
you did on the Mac, it'd probably save me a couple of hours.
Comment 22•25 years ago
|
||
my fixes on mac were in mozilla/widget/src/mac/
nsMacEventHandler::ConvertOSEventToMouseEvent
mainly the focussed on making sure the event was sent to the popup and not the
widget where the mouseDown occurred.
win32/linux will probably be different since they handle mouse capture in a
totally different way (at the OS level) but looking in nsWindow/nsWidget will
probably be a good place to start.
Comment 23•25 years ago
|
||
I added a couple of lines of code and now this works for me under Win32. But
it's gotta be a hack. It's just ... got... to... (doing his best William Shatner).
But I can't break it. If I combine this with my patch for Bug 17159, context
menus work beautifully for me under Win32.
Anyway, feel free to look at the patch and laugh. But just make sure that you
tell me when you're done laughing.
Comment 24•25 years ago
|
||
Comment 25•25 years ago
|
||
Adding myself to the cc: list.
Comment 26•25 years ago
|
||
One thing that I noticed when working on this bug is that when any menu is
active, be it context or not, the pointer still responds to whatever's under it.
For example, if I go to mozilla.org, drop down the tasks menu, then move my
pointer over some text the pointer changes to an I-beam. If I mouse over a
link, the pointer becomes the finger and the status bar displays the url. In
both cases the pointer should remain the default pointer. This is unrelated to
anything that I've done. Off to enter a new bug...
Comment 27•25 years ago
|
||
dean, i spoke with rod this morning and he doesn't feel comfortable with the
patch until we know why the mouse capture switching doesn't work with right-
mouse, but does with left-mouse. would it be possible for you to investigate this
and get enough info so we know what is going on here?
I'm too busy working on positioning issues, and this isn't pdt+ so I can't
justify spending a lot of time on it, but everyone in my group (including my
manager) wants this to get in for beta!
thanks!!!!
Comment 28•25 years ago
|
||
Don't worry, I'm not overly comfortable with the fix, either. What do you mean
when you say that it works for left-mouse?
Off the top of my head (source is at home), here's why I don't think it works.
1. right-button down;
2. context menu is created;
3. capture set to context menu;
4. capture set to browser window;
5. end of right-button down processing;
6. right-button up;
7. capture released from browser window, leaving the context menu with capture;
If this is the case, my patch removes step 4.
Comment 29•25 years ago
|
||
but doesn't it also remove step 3? or is that capture done elsewhere?
by "it works for the left-mouse button" i mean that things like the bookmarks
popup and other xul popups work with left-click-drag. It's only context menus
that don't seem to behave with a right-click-drag. I don't see how the code could
be any different, though, in terms of how it treats the two events.
Comment 30•25 years ago
|
||
I'm not sure where the capture in 3 is done. Actually, this is one thing that I
never really figured out.
The one difference between the left-mouse drag working for the bookmarks menu is
that this is initiated by clicking on an nsMenuBarFrame or something, isn't it?
And the context menu is initiated by a click on an nsWindow. Maybe there's
something special done by the menu bar. Perhaps in ToggleMenuActiveState() in
nsMenuBarFrame.cpp.
Sorry if I'm way off here. Things are really busy today. But I thought I'd
throw out a few suggestions.
Comment 31•25 years ago
|
||
OK, I'm still thinking that what I described in those 7 steps is what's
happening. If you comment out the CaptureMouse(PR_FALSE) in the button up
switch ChildWindow::DispatchMouseEvent of nsWindow.cpp, the menu never receives
messages. The MouseOver, etc., messages in nsMenuListener still fire, but
they're stolen by the nsWindow.
Perhaps something that would be a little less hacky would be similar to my
patch, but only not set the capture to the nsWindow if a popup menu with type of
"context" is active. Because it looks like by the time that processing gets to
DispatchMouseEvent(), the context menu has been created. But I can't figure out
how to check this. If this sounds like a better approach, then I'll need a
quick hint on how to find out if a context menu is active.
I'm going to keep looking...
Comment 32•25 years ago
|
||
*** Bug 31016 has been marked as a duplicate of this bug. ***
Comment 33•25 years ago
|
||
*** Bug 30264 has been marked as a duplicate of this bug. ***
Comment 34•25 years ago
|
||
moving all defects not directly related to P0 beta2 features off to M18.
Target Milestone: M15 → M18
Comment 35•25 years ago
|
||
*** Bug 32817 has been marked as a duplicate of this bug. ***
Comment 36•25 years ago
|
||
Wanna hear a pisser? The context menus in the Manage Bookmarks window and in
the Bookmarks sidebar work properly.
Comment 37•25 years ago
|
||
Try this one on for size. What I do is release the capture on the window that's
right-clicked on when the popup menu is first being activated, and before it's
shown. It's a lot of code, but it all looks necessary. I can't comment on it
for sure, because I took it almost verbatim from somewhere else. And it's XP,
so it should address all platforms at once.
The only thing that I haven't been able to get working is the active link
coloring should disappear when the menu disappears. For an example, right-click
a link and then press Esc. This is a symptom of the larger problem, being that
the window only receives NS_MOUSE_RIGHT_BUTTON_DOWN but never
NS_MOUSE_RIGHT_BUTTON_UP.
One solution is to, in the same place that I do the funky stuff above, send an
NS_MOUSE_RIGHT_BUTTON_UP event to the same window that we just released capture
from. But I couldn't figure out how to do that. It would be easy in Windows
(!) - just SendMessage(...). Can anyone offer a tip as to how to accomplish
this in XPToolkit? I looked into DispatchMouseEvent, but didn't get very far.
Comment 38•25 years ago
|
||
Comment 40•25 years ago
|
||
*** Bug 35387 has been marked as a duplicate of this bug. ***
Comment 41•25 years ago
|
||
*** Bug 36345 has been marked as a duplicate of this bug. ***
Comment 42•25 years ago
|
||
*** Bug 36345 has been marked as a duplicate of this bug. ***
Comment 43•25 years ago
|
||
*** Bug 33059 has been marked as a duplicate of this bug. ***
Comment 44•25 years ago
|
||
*** Bug 33059 has been marked as a duplicate of this bug. ***
Comment 45•25 years ago
|
||
I just voted for this bug, so I'll add a comment. The ability to click, flick,
and release to go back is really convenient. This is the Netscape 4 behavior,
and I much prefer it over the IE behavior.
There is a quirk in mozilla (M15) that may be related: If I right click for a
context menu then, before the menu appears, move the mouse to where the (eg)
"back" option will be; then when the menu appears, the mouse is already over
"back", but "back" is not highlighted. If I move the mouse a pixel, "back" is
highlighted. This is pretty disorienting.
Comment 46•25 years ago
|
||
Let me add to my last comment. It's a little weirder than I said. Again, right
click and move the mouse over "back" before the menu appears. Normally, as I
said before, "back" is initially not highlighted, but moving the mouse a pixel
causes it to be highlighted. Further, if you don't move the mouse after the
menu appears, clicking works even though "back" is not highlighted.
BUT--if you arrange that when the menu appears, the mouse is around the middle
of the empty space in the menu to the left of the word "Back", the above is not
true. There is a small window (roughly the center quarter of said empty space)
in which you can move the mouse around without the highlight kicking in. Move
out of the window, and the highlight comes on. Also, while you are in the
window, clicking doesn't work--there is no response to clicks.
I'm using the M15 Linux build. Please tell me if this should be a separate bug.
Comment 47•25 years ago
|
||
I'm not sure if this is understood or not, but the place in the Linux/GTK code
where the "capture" takes place is the "sButtonMotionTarget" hack in
widget/src/gtk/nsWidget.cpp. That is, when the mouse button goes down,
"sButtonMotionWidget" gets set to the target widget. From then on, all motion,
enter, and leave events up to and including the next mouse button up event get
redirected to that target widget.
If you comment out:
sButtonMotionTarget = this;
in nsWidget::OnButtonPressSignal, the context menu works as expected, but this
probably breaks other things.
I note that the Windows widget code has a sophisticated scheme based on a
MouseTrailer class to get Enter and Leave events to the right parties. Perhaps
this is what we need here?
Comment 48•25 years ago
|
||
Adding to my last comment... In particular, Dean's patch (attachment 7030 [details] [diff] [review])
doesn't help Linux/GTK. It just generates an extra CaptureMouse(false) without
a matching CaptureMouse(true)---this gives a "critical" (though harmless) GDK
error as GDK tries to ungrab a non-grabbed pointer, and it doesn't affect the
value of sButtonMotionTarget, so the mouse is still effectively captured.
Presumably this works with Windows because Windows does an implicit
CaptureMouse(true) in ChildWindow::DispatchMouseEvent whenever a mouse button
goes down, so the extra CaptureMouse(false) is actually having a useful effect.
Comment 49•25 years ago
|
||
I've done a little more work on this problem, and I've figured out the
fundamental reason that mouse capture "works" with regular menu bars but doesn't
work with right-clicking a context menu.
It boils down to the fact that the frame constructed by the XUL <browser>
element (or one of its child frames, perhaps) uses a *different view manager*
than the rest of the browser frames, including the frame constructed by the
<popup>.
When I left-press on the regular menu bar, the platform-specific toolkits jump
through various hoops to direct mouse events to a particular widget until the
mouse button is released. However, every widget's view handles the mouse event
by passing it to its view manager---the view manager then dispatches the event
to the appropriate view enclosing the current point.
Since all menubar components share the same view manager, it doesn't matter
which widget gets the mouse event. It gets passed up to the same view manager
which directs it to the view containing the mouse cursor.
However, when I right-press on browser content to get a context menu, what
happens? The platform-specific toolkits try to direct all mouse events to a
widget associated with the <browser> element. However, these elements have a
different view manager, one that's unaware of the context menu view. Even when
the mouse is moving over the context menu, the events are passed to some browser
widget, to the browser's view manager, and to a view managed by that view
manager, which will *never* be the context menu view.
To see that this is the case, you can do some XUL fiddling. In "navigator.xul",
search for the <browser ...> element, and add a box after it like so:
<box context="context" flex="100%">
<browser type="content-primary" id="content" src="about:blank" flex="100%"/>
<box flex="100%"/> <!-- *** ADD THIS BOX *** -->
</box>
When you start up your browser, you'll discover that right-dragging the context
menu doesn't work in the <browser> element, but it works in the empty <box>
you've added. The new <box> has the same view manager as the <popupset>, so
mouse events directed to the <box>'s widget find their way to the context menu
view.
Mouse grabbing, in general, seems a bit broken. Every platform-specific widget
set is using slightly different semantics for auto-grabbing, and there's no
working external control interface. nsWindow::CaptureMouse might work on some
platforms, but not on Linux/GTK---it doesn't undo the implicit grab performed by
the sButtonMotionTarget mechanism. The platform-independent mouse grabbing via
nsFrame::CaptureMouse "works" at a view-manager level, but its semantics aren't
clear. It doesn't really "grab" the mouse, it merely directs a particular view
manager to pass mouse events that somehow reach it to a specific managed view.
If events go to a different view manager, the grab is ineffective.
Does anyone know what the semantics (or at least usage guidelines) of
nsWindow::CaptureMouse, nsViewManager::GrabMouseEvents, and
nsFrame::CaptureMouse are supposed to be?
Comment 50•25 years ago
|
||
This would also seem to explain why the click-and-drag works properly in the
Manage Bookmarks window and Bookmarks sidebar panel.
Any idea what the fix is, then? Maybe on a right-click, we can grab the context
menu that's created, get its view manager, and then use GrabMouseEvents on it?
That is if GrabMouseEvents does what it sounds like it does...?
Comment 51•25 years ago
|
||
Infuriatingly, that won't work. Because the grab only works at a
per-view-manager level, the events (captured by the platform-dependent toolkits)
are directed to a browser widget which passes them to the browser view manager.
The *browser* view manager isn't capturing mouse events, though---only the
context menu's view manager is capturing them---so the browser view manager just
passes it off to the innermost enclosing browser view, ignoring the mouse
capture entirely.
What we'd need to do is get our hands on the browser widget that received the
mouse button down event; *it's* view manager will be the browser view manager
which receives all mouse events (up to including the next mouse button up) from
the browser widget, which gets them from the implicit grab performed by the
platform-dependent toolkits.
Then, if we could, we'd tell *that* view manager to grab mouse events on behalf
of a view (namely, the context menu view) that it doesn't own! This seems very
broken, since presumably a view manager shouldn't care about views it doesn't
manage. Still, it might work: it's even possible that the context menu has
jumped through enough hoops that the event positioning would work out right.
I think a better solution is to fix the toolkits---either by overloading the
nsWindow::CaptureMouse interface or by introducing a new method---so that it's
possible to reliably release all toolkit-level mouse captures, either explicit
(someone else called nsWindow::CaptureMouse) or implicit (when the mouse button
goes down and the toolkit starts directing all mouse events to the pressed
widget). Then, when the context menu listener sees a right mouse button down,
it can decide to release the implicit mouse grab right then and there. This
also means we won't have to make the right button "magical": higher-level code
can decide when releasing an implicit grab is warranted.
Comment 52•25 years ago
|
||
mass-moving all bugs to m21 that are not dogfood+ or nsbeta2+ or nsbeta2-
Target Milestone: M19 → M21
Comment 53•24 years ago
|
||
*spam*: transferring current XP Menu bugs over to jrgm, the new component owner.
feel free to add me to the cc list (unless am the Reporter) of any of these, if
you have any questions/etc.
QA Contact: sairuh → jrgm
Reporter | ||
Comment 54•24 years ago
|
||
*** Bug 42164 has been marked as a duplicate of this bug. ***
Comment 55•24 years ago
|
||
*** Bug 42570 has been marked as a duplicate of this bug. ***
Updated•24 years ago
|
Summary: Context menus can't be used with a single drag → xpPopups and context menus can't be used with a single drag
Comment 56•24 years ago
|
||
nominating for beta3, we need to nail this one once and for all.
Keywords: nsbeta3
Comment 57•24 years ago
|
||
*** Bug 41643 has been marked as a duplicate of this bug. ***
Comment 59•24 years ago
|
||
Can someone remove the "patch" keyword for now, as neither of my patches work
for all cases?
Comment 60•24 years ago
|
||
okey-dokey -- removing patch keywords. [Side-note: claudius can you set Dean
up with the right permissions to do this himself (since I lack the powers to
do so :-]).
Keywords: patch
Updated•24 years ago
|
Comment 61•24 years ago
|
||
Re:side-note So you have spoken as so it has been done.
Comment 62•24 years ago
|
||
Re: side note - thanks, by the way.
Updated•24 years ago
|
Whiteboard: nsbeta3+ → [nsbeta3+]
Comment 63•24 years ago
|
||
*** Bug 47794 has been marked as a duplicate of this bug. ***
Comment 64•24 years ago
|
||
*** Bug 47899 has been marked as a duplicate of this bug. ***
Comment 65•24 years ago
|
||
*** Bug 48059 has been marked as a duplicate of this bug. ***
Comment 66•24 years ago
|
||
So Kevin, am I thinking along the same lines as you? In the browser's view
maanager, check if there's a context menu currently open. If there is, pass all
mouse messages through to the context menu's view manager.
Comment 67•24 years ago
|
||
Please note that we are not committing to fix P4/P5 bugs for N6, although we
could still work on a fix in priority order, or take a patch.
Target Milestone: M21 → M18
Comment 68•24 years ago
|
||
Then this bug really shouldn't be P4.
Comment 69•24 years ago
|
||
This was working on Windows but is shadowed by the fix for bug 48838, which
changed the context menu behavior to standard win32 behavior (that is, the
context menu appears onmouseup rather than onmousedown as before). So if this
is working on Mac and Linux now, we can mark this fixed...
Comment 71•24 years ago
|
||
On a 8/25 morning CVS pull on linux one-drag operation of context menus still
does not work. Reproduction steps:
* press and hold right mouse button
* move pointer over context menu items - they will not highlight, and if
you happen to pass over a link in the underlying page the status message
will be updated like an ordinary mouse-over
Tested on linux using fvwm2.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Comment 72•24 years ago
|
||
linux --> pav
Assignee: pinkerton → pavlov
Status: REOPENED → NEW
OS: All → Linux
Hardware: All → PC
Comment 73•24 years ago
|
||
Changing OS back to All and resolution to WONTFIX, given the discussion in bug
49844. Might as well add a dependency on 49844 while I'm at it.
Status: NEW → RESOLVED
Closed: 24 years ago → 24 years ago
Depends on: 49844
OS: Linux → All
Resolution: --- → WONTFIX
Comment 74•24 years ago
|
||
Reopening and setting back to Linux only (although still P4/not committed).
For popups this works on all platforms (mac/linux/win32) (try attachments
or threadPane column selection in mailnews for example).
For context-menus, this works on Mac (you can get the context menu, drag and
then release over a menuitem to select it).
Since we are going with win32 platform convention, where a context menu comes
up on mouseup, this cannot work for context menus (a second click is required,
but that is the same behaviour as in other windows apps).
However, on Linux, the context menu comes up on mousedown, but the menuitems
in the context menu are not selected until you release the mouse (two clicks
are required). This is counter to platform convention, where other apps allow
you to do context-click/drag/release-to-select.
Status: RESOLVED → REOPENED
OS: All → Linux
Resolution: WONTFIX → ---
Comment 75•24 years ago
|
||
I don't agree but it doesn't sound like it's going to change (bug 49844). I'm
out.
Comment 76•24 years ago
|
||
Mass-moving P4/P5 bugs to Future milestone. We just don't have any time left
for these, although we could still consider taking a good patch. Adding
Helpwanted keyword.
Keywords: helpwanted
Target Milestone: M18 → Future
Comment 78•24 years ago
|
||
Removing nsbeta3- and requesting reevaluation of this bug. It was mass-moved to
future, but appears on the Most Frequently Reported bugs list. I therefore
believe it should not have been P4 or P5, and so should not have been moved to
Future.
Please confirm that you believe this most frequently reported bug is indeed
low-priority.
Gerv
Whiteboard: [nsbeta3-]
Comment 79•24 years ago
|
||
confirming nsbeta3-/future. The mostfreq status is deceptive, since it is mostly
from when this was a problem on Windows. This defect is just not worth the time
and risk. In order to ship this year, which we *must* do, we cannot afford to
make unnecessary changes to the codebase. IMO, making such changes at this time
could endanger the future of the entire codebase. removing helpwanted.
Keywords: helpwanted
Whiteboard: [nsbeta3-]
Comment 80•24 years ago
|
||
A little melodramatic, Peter, but fair enough :-)
Removing mostfreq, as the Frequently Reported behaviour has been fixed.
Gerv
Keywords: mostfreq
Comment 81•24 years ago
|
||
Not that I disagree but I find it interesting that changes to the codebase were
made two or three weeks ago to change the context menus from button-down to
button-up.
Comment 82•24 years ago
|
||
That caught my eye too, and is another of many examples of the kind of churn
that has to stop if we are to have any hope of ever shipping this product.
Gervase may think my comment melodramatic, but I'm just plainly saying what I
feel strongly, based on many years of shipping products.
Comment 83•24 years ago
|
||
It was more the image engendered by:
"IMO, making such changes at this time could endanger the future of the entire
codebase."
of the entire Mozilla codebase, and all mirrors of it, suddenly vanishing into
thin air overnight because someone had made too big a change, which amused me
:-)
"Ye cannae make a change like that, Cap'n - she wouldnae hold together!"
Anyway, back to some real work...
Gerv
Comment 84•24 years ago
|
||
Peter, I agree. That's why it surprised me that that change made it in so
eralatively late in the game.
Comment 85•24 years ago
|
||
I didn't mean that existing code would disappear, but if Netscape failed,
mozilla.org would instantly lose most of its support. The *future* of the
codebase would be then be vastly different, wouldn't it?
Comment 86•24 years ago
|
||
I know you didn't mean that :-) It was just an amusing thought, that's all.
Never mind :-)
Gerv
Comment 87•24 years ago
|
||
*** Bug 53526 has been marked as a duplicate of this bug. ***
Comment 88•24 years ago
|
||
*** Bug 54290 has been marked as a duplicate of this bug. ***
This would actually be fixed if we changed things to just have one view manager
per window ... a change that would fix a number of other problems too.
Comment 90•24 years ago
|
||
*** Bug 58065 has been marked as a duplicate of this bug. ***
Comment 91•24 years ago
|
||
*** Bug 59472 has been marked as a duplicate of this bug. ***
Comment 92•24 years ago
|
||
*** Bug 59721 has been marked as a duplicate of this bug. ***
Reporter | ||
Comment 93•24 years ago
|
||
*** Bug 60145 has been marked as a duplicate of this bug. ***
Reporter | ||
Comment 94•24 years ago
|
||
Restoring mostfreq keyword: 16 of the duplicates of this bug were filed
specifically for Linux. (Of the remainder, 1 -- not counting the original report
-- was for Mac OS, and the other 5 were for Windows and therefore really dups of
bug 49844.)
Keywords: mostfreq
Comment 95•24 years ago
|
||
A patch follows (effects "gtk" only). Sigh...
I simply drop that damn sButtonMotionTarget processing in gtk/nsWidget whenever
gtk/nsWindow captures the mouse (via CaptureMouse or NativeGrab called by
nsCaptureRollupEvents).
Ideally, the CaptureMouse/NativeGrab code could be smart enough to set up the
sButtonMotionTarget processing for the grabber, but I can't figure out what to
set sButtonMotionTarget to. The obvious, setting it to the nsWindow doing the
CaptureMouse(PR_TRUE), doesn't work---whichever nsWidget actually gets the
events, it's not the nsWindow that captures the mouse.
If someone could explain to me how nsIFrame::CaptureMouse,
nsIWidget::CaptureMouse, and nsWindow::sGrabWindow/sIsGrabbing, are supposed to
interact, how the GTK event-handling model (spread over nsWidget, nsWindow, and
nsGtkEventHandler) is supposed to work, and how the superwin, mozarea, mozbox,
shell, and every other bloody widget flying around are supposed to do whatever
it is they're supposed to do (in Mozilla and in embedded code), I could actually
attempt a better fix. It's just beyond my complexity horizon. I haven't looked
through the documentation list in a while; maybe I'll try there.
Anyway, it looks like sButtonMotionTarget processing doesn't accomplish much
right now. Or rather, whatever it accomplishes is undone by the post-toolkit
event processing. For example, if you left drag the normal menubar menus (in
Mozilla or even Netscape final), the "back" and "reload" buttons still respond
to enter/leave, tooltips still pop up, and so on. Even though the
sButtonMotionTarget has captured all mouse events, the nsViewManager is still
directing them off to all sorts of widgets. The only thing sButtonMotionTarget
processing seems to accomplish in the current setup is making sure that events
between button down and button up go to the same view manager, even if you move
into a view managed by a different manager. That's probably good for some
purposes, but it's what causes this content-menu bug, as I explained somewhere
way up above.
Anyway, I guess what I'm trying to say is that even though my patch "breaks" the
sButtonMotionTarget processing, it doesn't actually have a visible effect, and
context menus will work the way they're supposed to.
Patch follows.
Comment 96•24 years ago
|
||
Comment 97•24 years ago
|
||
*** Bug 62676 has been marked as a duplicate of this bug. ***
Comment 98•24 years ago
|
||
pav -- can you have a look at the attached patch. Thanks.
Comment 99•24 years ago
|
||
->moz0.8, increasing priority to p2 to handle patch
Priority: P3 → P2
Target Milestone: --- → mozilla0.8
Comment 100•24 years ago
|
||
blizzard? care to take a look at this too?
Comment 101•24 years ago
|
||
Patch #19719 seems to make drag-select work with context menus on linux.
Comment 102•24 years ago
|
||
*** Bug 67554 has been marked as a duplicate of this bug. ***
Comment 103•24 years ago
|
||
*** Bug 67554 has been marked as a duplicate of this bug. ***
Assignee | ||
Comment 104•24 years ago
|
||
r=pavlov, sr=blizzard on this. Sorry that it took so long to look at it. The
fix looks right. Personally, I'm amazed that you were able to get that to work
considering the maze of event paths on linux. I'll check this in in a few minutes.
Assignee | ||
Comment 105•24 years ago
|
||
-> blizzard@mozilla.org for checkin
Assignee: pavlov → blizzard
Status: REOPENED → NEW
Assignee | ||
Comment 106•24 years ago
|
||
Checked in.
Status: NEW → RESOLVED
Closed: 24 years ago → 24 years ago
Resolution: --- → FIXED
Component: XP Toolkit/Widgets: Menus → XUL
QA Contact: jrgmorrison → xptoolkit.widgets
You need to log in
before you can comment on or make changes to this bug.
Description
•