[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: kdenonbeta/krecipes/src/widgets
From: Jason Kivlighn <confederacy2 () excite ! com>
Date: 2004-05-10 2:11:21
Message-ID: 20040510021121.2248722AE () office ! kde ! org
[Download RAW message or body]
CVS commit by jkivlighn:
-Implemented keyboard navigation to the Krecipes menu. The KreMenu class now \
receives mouse and tab focus, and you can move from one menu item to the next using \
the arrow keys.
M +642 -588 kremenu.cpp 1.25
M +1 -0 kremenu.h 1.12
--- kdenonbeta/krecipes/src/widgets/kremenu.cpp #1.24:1.25
@@ -23,4 +23,5 @@
#include <iostream>
+#include <kapplication.h>
#include <kcursor.h>
#include <kglobalsettings.h>
@@ -43,4 +44,5 @@ m_currentMenu=&(*currentMenuId);
dragging=false;
setMouseTracking(true);
+setFocusPolicy( QWidget::StrongFocus );
}
@@ -104,4 +106,5 @@ QWidget::childEvent(e);
void KreMenu::collectClicks(KreMenuButton *w)
{
+setFocus();
highlightButton(w);
@@ -158,4 +161,53 @@ buttonMenu->activeButton=button;
}
+void KreMenu::keyPressEvent( QKeyEvent *e )
+{
+ switch ( e->key() )
+ {
+ case Qt::Key_Up:
+ {
+ int current_index = \
m_currentMenu->positionList[m_currentMenu->activeButton]; + if ( \
current_index > 0 ) + {
+ highlightButton(m_currentMenu->widgetList[current_index - \
1]); +
+ //simulate a mouse click
+ QMouseEvent me( QEvent::MouseButtonPress, QPoint(), 0, 0 );
+ KApplication::sendEvent( m_currentMenu->activeButton, &me );
+
+ e->accept();
+ }
+ break;
+ }
+ case Qt::Key_Down:
+ {
+ int current_index = \
m_currentMenu->positionList[m_currentMenu->activeButton]; + if ( \
current_index < int(m_currentMenu->positionList.count()) - 1 ) + {
+ highlightButton(m_currentMenu->widgetList[current_index + \
1]); +
+ //simulate a mouse click
+ QMouseEvent me( QEvent::MouseButtonPress, QPoint(), 0, 0 );
+ KApplication::sendEvent( m_currentMenu->activeButton, &me );
+
+ e->accept();
+ }
+ break;
+ }
+ case Qt::Key_Enter:
+ case Qt::Key_Return:
+ case Qt::Key_Space:
+ {
+ //simulate a mouse click
+ QMouseEvent me( QEvent::MouseButtonPress, QPoint(), 0, 0 );
+ KApplication::sendEvent( m_currentMenu->activeButton, &me );
+
+ e->accept();
+ break;
+ }
+ default: e->ignore();
+ }
+}
+
void KreMenu::mousePressEvent (QMouseEvent *e)
{
@@ -167,4 +219,6 @@ if (x > (width()-15))
}
dragging=true;
+
+QWidget::mousePressEvent(e);
}
--- kdenonbeta/krecipes/src/widgets/kremenu.h #1.11:1.12
@@ -76,4 +76,5 @@ protected:
virtual void paintEvent (QPaintEvent *e);
virtual void childEvent (QChildEvent *e);
+ virtual void keyPressEvent( QKeyEvent *e );
virtual void mouseMoveEvent (QMouseEvent *e);
virtual void mousePressEvent (QMouseEvent *e);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic