[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