[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kfm-devel
Subject:    Re: [Patch] Fixing the Access Key system
From:       bj () altern ! org
Date:       2004-07-16 11:06:10
Message-ID: 200407161314.22030.bj () altern ! org
[Download RAW message or body]

>  I think you're leaking QLabel's, close() doesn't delete the widget unless
> it has WDestructiveClose set (or you could connect to deleteLater() instead
> of close() ). The labels also don't update position if the page relayouts
> and the position of the element with accesskey changes, not sure how to fix
> that, but that's just a minor glitch. 
Right, I will add WDestructiveClose. Regarding the relayout problem, I think 
the easiest thing is to delete the labels when the page is relayouted.

> Other than that I like it and I'd support committing it.
Cool. I will wait until cvs is open for non-urgent commits (18th), and try to 
commit then.

>  I also noticed another problem with accesskeys after you changed the
> activation to just Ctrl: It doesn't work if the focus is e.g. in a
> lineedit, and it used to with Ctrl+Alt. You can try it e.g. in
> linuxtoday.com discussions.

Yes, that's where the grabKeybord() problem. I made a few tests reintroducing 
it, and I must say that since we only grab one key and the releaseKeyboard 
occurs before re-dispatching the event, I couldn't find any side affect. 
Global shortcuts work well and you can use the accesskey from inside a 
textarea. (see patch attached).

Next biggest problem is to find a way to make all this work with the sticky 
keys feature... 

jean-baptiste

["accesskeys_grab.diff" (text/x-diff)]

Index: khtmlview.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtmlview.cpp,v
retrieving revision 1.648
diff -u -3 -r1.648 khtmlview.cpp
--- khtmlview.cpp	15 Jul 2004 01:14:12 -0000	1.648
+++ khtmlview.cpp	16 Jul 2004 10:36:36 -0000
@@ -1368,6 +1368,7 @@
 	    #if 0 // added i18n string in case the feature makes it in KDE 3.3
 	    accessMsg+=i18n(" -- press Ctrl to display all available access keys");
 	    #endif
+	    grabKeyboard();
 	    m_part->setStatusBarText(accessMsg,KHTMLPart::BarHoverText);
 	    d->accessKeysActivated = true;
 	    d->accessKeysPreActivate = false;
@@ -1832,6 +1833,7 @@
 
 void KHTMLView::accessKeysTimeout()
 {
+releaseKeyboard();
 d->accessKeysActivated=false;
 d->accessKeysPreActivate = false;
 m_part->setStatusBarText(QString::null, KHTMLPart::BarHoverText);
@@ -1841,7 +1843,7 @@
 bool KHTMLView::handleAccessKey( const QKeyEvent* ev )
 {
 if (!d->accessKeysActivated) return false;
-
+releaseKeyboard();
 // Qt interprets the keyevent also with the modifiers, and ev->text() matches that,
 // but this code must act as if the modifiers weren't pressed
     QChar c;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic