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

List:       kde-commits
Subject:    kdelibs/khtml
From:       Tobias Anton <anton () stud ! fbi ! fh-darmstadt ! de>
Date:       2004-07-12 19:57:04
Message-ID: 20040712195704.5667516B05 () office ! kde ! org
[Download RAW message or body]

CVS commit by tanton: 

- allow labels to get focused
- let labels react on space, return and enter release events
  by activating their target
- make textarea activation work when the accesskey
  of the corresponding label is pressed


  M +6 -1      khtmlview.cpp   1.644
  M +20 -10    html/html_formimpl.cpp   1.374
  M +2 -1      html/html_formimpl.h   1.154


--- kdelibs/khtml/khtmlview.cpp  #1.643:1.644
@@ -1870,4 +1870,9 @@ bool KHTMLView::focusNodeWithAccessKey( 
     Node guard( node );
     if( node->isSelectable()) {
+        if (node->id()==ID_LABEL) {
+            // if Accesskey is a label, give focus to the label's referrer.
+            node=static_cast<ElementImpl *>(static_cast< HTMLLabelElementImpl* >( \
node )->getFormElement()); +            if (!node) return true;
+        }
         // Set focus node on the document
         m_part->xmlDocImpl()->setFocusNode(node);
@@ -1898,5 +1903,5 @@ bool KHTMLView::focusNodeWithAccessKey( 
           break;
         case ID_TEXTAREA:
-          break; // just focusing it is enough
+            m_part->xmlDocImpl()->setFocusNode(node);
         case ID_LEGEND:
             // TODO

--- kdelibs/khtml/html/html_formimpl.cpp  #1.373:1.374
@@ -1603,10 +1603,19 @@ return newNode;
 
 void HTMLLabelElementImpl::defaultEventHandler(EventImpl *evt)
- {
-    if ( !m_disabled  && 
-        evt->isMouseEvent() && evt->id() == EventImpl::CLICK_EVENT){
+{
+    if ( !m_disabled ) {
+        bool act = false;
+        if ( evt->id() == EventImpl::CLICK_EVENT ) {
+            act = true;
+        }
+        else if ( evt->id() == EventImpl::KEYUP_EVENT ) {
+            QKeyEvent *ke = static_cast<TextEventImpl *>(evt)->qKeyEvent;
+            if (ke && active() && (ke->key() == Qt::Key_Return || ke->key() == \
Qt::Key_Enter || ke->key() == Qt::Key_Space)) +                act = true;
+        }
+
+        if (act) {
             NodeImpl *formNode=getFormElement();
-            if (formNode)
-            {
+            if (formNode) {
                 getDocument()->setFocusNode(formNode);
                 if (formNode->id()==ID_INPUT)
@@ -1615,4 +1624,5 @@ void HTMLLabelElementImpl::defaultEventH
                 evt->setDefaultHandled();
             }
+    }
     HTMLGenericFormElementImpl::defaultEventHandler(evt);
 }

--- kdelibs/khtml/html/html_formimpl.h  #1.153:1.154
@@ -321,4 +321,5 @@ public:
     virtual void attach();
     virtual void defaultEventHandler(EventImpl *evt);
+    virtual bool isSelectable() const { return true; }
     NodeImpl* getFormElement();
 


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

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