Closed Bug 219706 Opened 21 years ago Closed 20 years ago

Using arrow keys to select drop down list box items selects two down or two up

Categories

(Core :: XUL, defect)

x86
Linux
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: jollymd, Assigned: bryner)

References

Details

(Keywords: fixed-aviary1.0, fixed1.7.5, Whiteboard: [has patch has reviews needs landing])

Attachments

(1 file)

User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030917 Firebird/0.6.1+
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030917 Firebird/0.6.1+

If I use the arrow keys to select an item in a drop down list box, it will not
select the next item, it will select the item 2 down or 2 up.

Reproducible: Always

Steps to Reproduce:
1. Open a drop down list box
2. Hit the up arrow or down arrow to select an item


Actual Results:  
If I am at the top of the list and hit the down arrow key, the third item is now
selected.

Expected Results:  
The second item should be selected.  Hitting the down arrow key again should
select the third item.
QA Contact: asa
(In reply to comment #0)
> ...
> If I use the arrow keys to select an item in a drop down list box, it will not
> select the next item, it will select the item 2 down or 2 up.
> 
> Reproducible: Always
> 
> Steps to Reproduce:
> 1. Open a drop down list box
> 2. Hit the up arrow or down arrow to select an item
> 
> ...

I'm glad to find my bug after an hour of search here ... ;-)

My Config:
User-Agent:       Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031011
Build Identifier: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.4.1) Gecko/20031011

This phenomenon appears e.g. on the Mozilla-Mail->[V_i_ew] listbox or on the
Edit->Preferences->Appearance->Fonts->[Fon_t_s for:] listbox.
If the listbox has an uneven number of items, the down key scrolls first through
the uneven items and then through the even items (if 1 is selected by default)
Ex. for 5 items: 1->3->5->2->4->1...
If the listbox has an even number of items, you can reach only half of them,
depending on whether the first selection starts with an uneven or even item.
I confirm the bug, it is present also in 0.6
this is a toolkit bug, so reassigning
Assignee: mscott → jag
Component: Mail Window Front End → XP Toolkit/Widgets
Product: Thunderbird → Browser
QA Contact: jrgmorrison
Version: unspecified → Trunk
I can't reproduce this. Note that menulist up/down handling is in
nsMenuPopupFrame::KeyboardNavigation by way of nsMenuListener.cpp
Attached patch patchSplinter Review
This only happens on gtk2, not sure if that would explain why Neil doesn't see
it. The problem is that nsMenuFrame::HandleEvent unconditionally sets the event
status to ConsumeDoDefault (even if it was already ConsumeNoDefault), so we
don't tell gtk that we consumed the event.  gtk then sends it up to the parent
widget (I think) and we get the event again.  gtk1 always does
gtk_signal_emit_stop_by_name() after handling a click event (regardless of the
event status)... I'm not sure if we want to do that on gtk2 or not, but I think
this fix to the menu code is correct either way.
Assignee: jag → bryner
Status: NEW → ASSIGNED
Comment on attachment 156229 [details] [diff] [review]
patch

mkaply, this code should look familiar, you had a hand in it a few years ago to
fix what sounds like a similar problem for os2.
Attachment #156229 - Flags: superreview?(dbaron)
Attachment #156229 - Flags: review?(mkaply)
Comment on attachment 156229 [details] [diff] [review]
patch

Interesting.

hyatt removed my OS/2 fix in bug 45728 which noone ever told me.

So your fix theoretically should put things back to better than they were
before. cool.
Attachment #156229 - Flags: review?(mkaply) → review+
*** Bug 254409 has been marked as a duplicate of this bug. ***
Comment on attachment 156229 [details] [diff] [review]
patch

sr=dbaron, although it seems to me that we shouldn't be allowing events to
bubble at the widget level, ever.
Attachment #156229 - Flags: superreview?(dbaron) → superreview+
Flags: blocking-aviary1.0PR+
Whiteboard: [has patch has reviews needs landing]
checked in
Status: ASSIGNED → RESOLVED
Closed: 20 years ago
Keywords: fixed-aviary1.0
Resolution: --- → FIXED
*** Bug 228869 has been marked as a duplicate of this bug. ***
Comment on attachment 156229 [details] [diff] [review]
patch

a=mkaply for 1.7.

Bryner, please check this into 1.7 and mark fixed1.7.x

Thanks
Attachment #156229 - Flags: approval1.7.x+
Keywords: fixed1.7.x
*** Bug 265239 has been marked as a duplicate of this bug. ***
*** Bug 254327 has been marked as a duplicate of this bug. ***
I'm curious. Why not just leave the status as eIgnore? What distinction is being made between eIgnore and DoDefault here (or in general if anyone can shed any light on that)?

Does anyone know of any good reason not to merge eIgnore and DoDefault so we essentially have two-state allow/prevent default behaviour, instead of the three-state behaviour we have now?
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: