Bug 45180

Summary: Select with scrollwheel in select-box and text fields feature desperately needs to be configureable
Product: [Applications] konqueror Reporter: Jesper Juhl <jesper.juhl>
Component: khtml formsAssignee: Konqueror Bugs <konqueror-bugs-null>
Status: RESOLVED FIXED    
Severity: major CC: clan_lambda, davidhj, jellicle, jeremyhu, kde, moritz-kdebugs, techniq35
Priority: HI    
Version First Reported In: 3.0.6   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed/Implemented In:
Sentry Crash Report:

Description Jesper Juhl 2002-07-14 11:46:08 UTC
(*** This bug was imported into bugs.kde.org ***)

Package:           konqueror
Version:           3.0.6 (using KDE 3.0.6 CVS/CVSup/Snapshot)
Severity:          wishlist
Installed from:    Compiled sources
Compiler:          gcc 2.95.3
OS:                Linux
OS/Compiler notes: Slackware


I've noticed that Konqueror has a new feature - you can use the scroll wheel on your mouse over <select> boxes and in <textarea> fields to scroll up/down and select options.

This feature desperately needs to be configureable and off by default as it is (IMHO) useability hell.


There are a few reasons why I think this feature is bad:

- if you are using the scrollwheel to scroll up or down on a large webpage and the mouse happens to hit a "scrollable" field somewhere on the page then the scrolling on the page will stop and will instead scroll the field you hit. This is annoying a best.

- If you use the scrollwheel to scroll a select box that is used as a menu (often seen on many webpages) and this select box has a javascript assiciated with it that will reload the page with the option selected then when scrolling the select box you have absolutely no control over which option gets selected. Becourse as soon as you hold a slight pause to read what you have scrolled down to the selection will activate as if you had clicked it. This is especially annoying if you inadvertedly hit such a select box while scrolling a large page (as described above).


There are a few options to make this feature actually usable.

Either:

- Keep the current behaviour but make it configurable and off by default.

- Change the behaviour so that when scrolling select boxes it will pop up the list of options and scroll inside that list and only activate a javascript action when the user actually clicks on an option.

- Only have the scrollwheel action active on select boxes when the user has clicked the box and sees the list of options and then only allow scrollwheel-scrolling when the mouse is over the scrollbar besides the list of options (only activating the scrollwheel when the mouse is over a widgets scrollbar would also make input box scroll nicer).

- Make any combination of the above configureable so the user can choose what behaviour is desired- I still believe it should be off by default.


Please feel free to contact me if you need more info or a better description.


Best regards
Jesper Juhl - jju@dif.dk


(Submitted via bugs.kde.org)
Comment 1 Unknown 2002-09-16 07:03:48 UTC
Jesper is completely correct -- this is a severe usability issue. 
Comment 2 Stephan Binner 2002-09-20 18:14:35 UTC
*** Bug 43944 has been marked as a duplicate of this bug. ***
Comment 3 Stephan Binner 2002-09-20 18:14:54 UTC
*** Bug 41276 has been marked as a duplicate of this bug. ***
Comment 4 Stephan Binner 2002-09-20 18:15:27 UTC
*** Bug 38513 has been marked as a duplicate of this bug. ***
Comment 5 Stephan Binner 2002-09-20 18:15:49 UTC
*** Bug 22204 has been marked as a duplicate of this bug. ***
Comment 6 Stephan Binner 2002-09-20 18:17:40 UTC
My idea would be to start a timer once scrolling starts and to don't activate 
combo boxes and text field scrolling before it runs out. 
Comment 7 Dirk Mueller 2002-09-25 16:10:59 UTC
*** Bug 45400 has been marked as a duplicate of this bug. ***
Comment 8 Dirk Mueller 2002-10-17 04:29:59 UTC
Subject: kdelibs/khtml/rendering

CVS commit by mueller: 

only allow wheel events to be send to embedded widgets if they have the
focus. 
CCMAIL: 45180-done@bugs.kde.org

  M  +2 -1     render_frames.cpp   1.143
  M  +7 -6     render_replaced.cpp   1.103

Comment 9 jeremyhu 2002-10-19 11:15:06 UTC
I just added the following to bug 41275 which is a duplicate of this bug (but 
not marked as such... can someone please do that): 
 
This has been bothering me as well, and I just came by to submit this  
"wishlist" item. Why don't you just inhibit the mouse scroll target from  
shifting while scrolling... I realize this isn't as simple as:  
 
if(last scroll event was less than 1 second ago) {  
don't change scrolling target  
}  
 
but, that behavior SHOULD be present. If the user scrolls that quickly, it  
should be aparent that they want to scroll the page and not the select box.  
Another way could be to only change the focus of the scroll to the select box  
if the mouse moves over the combo box (rather than the combo box moving under  
the mouse) 
Comment 10 John Firebaugh 2002-10-19 20:03:07 UTC
*** Bug 41275 has been marked as a duplicate of this bug. ***
Comment 11 jeremyhu 2002-10-29 20:59:38 UTC
I see that in recent cvs, wheel scrolling of select boxes is disabled entirely unless the select 
box is "opened".  Is there a plan to go back to the "mouse over" operation that was in there 
before but with a delay timer or other mechanism in place (see my previous message) to allow 
the best of both worlds? 
Comment 12 RafaƂ Rzepecki 2003-10-05 10:52:40 UTC
I totally agree with jeremyhu@uclink4.berkeley.edu. The possibility of quickly 
choosing an option from a combo box WITHOUT clicking or focusing it in another 
is really useful, especially when filling large forms, like surveys etc. Sure, 
one has to be careful not to change an option when just scrolling around. I 
think it would be optimal to implement this "scroll timer" feature, so that 
both uncatious scrolling-through and unfocused combo-box selection would be 
possible. 
And I think that timer should be system-wide setting configurable in kcm-mouse 
(both the timeout and a possibility to disable the feature whatsoever, if one 
would like to, although by default it should be enabled), so that all the apps 
could benefit from it. 
Comment 13 Stephan Kulow 2003-10-25 16:52:48 UTC
Dirk says the bug reappeared due to Qt 3.2
Comment 14 Stephan Kulow 2003-10-25 16:53:19 UTC
*** Bug 60570 has been marked as a duplicate of this bug. ***
Comment 15 Stephan Kulow 2003-11-08 22:27:22 UTC
we could still release 3.2 with it, even though it sucks
Comment 16 Philippe Fremy 2003-12-11 13:28:01 UTC
I fully agree with the comments made there. I was just about to submit a bug for that. The problem is present in KDE 3.2 beta 2.

The initial idea of allowing to scroll form widgets when the mouse is on top of them is good. It saves you one click and I like to have it. You just have to differentiate it from the "user is scrolling page" situation and the timer looked like a good idea to me.

I hope this can get fixed.
Comment 17 Dirk Mueller 2004-01-09 15:54:02 UTC
Subject: kdelibs/khtml

CVS commit by mueller: 

CCMAIL: 45180-done@bugs.kde.org


  M +6 -0      ChangeLog   1.144
  M +5 -17     khtmlview.cpp   1.604
  M +15 -1     rendering/render_replaced.cpp   1.156


--- kdelibs/khtml/ChangeLog  #1.143:1.144
@@ -1,2 +1,8 @@
+2004-01-09  Dirk Mueller  <mueller@kde.org>
+
+        * rendering/render_replaced.cpp (eventFilter): readd the wheel event handling
+        which allows scrolling of the page again. Thanks a lot for just removing it. (#45180)
+        
+
 2004-01-02  Dirk Mueller  <mueller@kde.org>
 

--- kdelibs/khtml/khtmlview.cpp  #1.603:1.604
@@ -1250,8 +1250,8 @@ bool KHTMLView::eventFilter(QObject *o, 
                 default:
                     break;
-                }/*end switch*/
-            }/*end if*/
-        }/*end if*/
-    }/*end if*/
+                }
+            }
+        }
+    }
 
     QWidget *view = viewport();
@@ -1316,17 +1317,4 @@ bool KHTMLView::eventFilter(QObject *o, 
                 }
                 break;
-            case QEvent::Wheel:
-                if (w->parentWidget() == view) {
-                    // don't allow the widget to react to wheel event unless its
-                    // currently focused. this avoids accidentally changing a select box
-                    // or something while wheeling a webpage.
-                    if (qApp->focusWidget() != w &&
-                        w->focusPolicy() <= QWidget::StrongFocus)  {
-                        static_cast<QWheelEvent*>(e)->ignore();
-                        QApplication::sendEvent(this, e);
-                        block = true;
-                    }
-                }
-                break;
             case QEvent::MouseMove:
             case QEvent::MouseButtonPress:

--- kdelibs/khtml/rendering/render_replaced.cpp  #1.155:1.156
@@ -482,4 +482,18 @@ bool RenderWidget::eventFilter(QObject* 
             filtered = true;
         break;
+
+    case QEvent::Wheel:
+        if (widget()->parentWidget() == view()->viewport()) {
+            // don't allow the widget to react to wheel event unless its
+            // currently focused. this avoids accidentally changing a select box
+            // or something while wheeling a webpage.
+            if (qApp->focusWidget() != widget() &&
+                widget()->focusPolicy() <= QWidget::StrongFocus)  {
+                static_cast<QWheelEvent*>(e)->ignore();
+                QApplication::sendEvent(view(), e);
+                filtered = true;
+            }
+        }
+        break;
     default:
         break;


Comment 18 Dylan Griffiths 2004-03-25 07:49:02 UTC
Is this verified fixed in 3.2?  I have 3.1.4 here, and I just accidently triggered a very similar behaviour.  To whit, I was moving my mouse around while reading, and idly scrolling at different points.  I didn't notice the mouse going over a list-box selector, and my scrolling caused it to change (no menu, no warning, just a change of the selected item), which caused a different page to load due to an OnChange JS selector bit.

If this patch in 3.2 fixes that case as well, then I don't have to open a new bug about mousewheel usage with selector boxes.
Comment 19 Alain Knaff 2004-05-05 22:27:05 UTC
Didn't encounter the bug in a while, so I think it is fixed.