-rw-r--r-- | library/qpemenubar.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/library/qpemenubar.cpp b/library/qpemenubar.cpp index c658d10..4aa0bf3 100644 --- a/library/qpemenubar.cpp +++ b/library/qpemenubar.cpp @@ -1,174 +1,183 @@ /********************************************************************** ** Copyright (C) 2000-2002 Trolltech AS. All rights reserved. ** ** This file is part of the Qtopia Environment. ** ** This file may be distributed and/or modified under the terms of the ** GNU General Public License version 2 as published by the Free Software ** Foundation and appearing in the file LICENSE.GPL included in the ** packaging of this file. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ** See http://www.trolltech.com/gpl/ for GPL licensing information. ** ** Contact info@trolltech.com if any conditions of this licensing are ** not clear to you. ** **********************************************************************/ #define INCLUDE_MENUITEM_DEF #include "qpemenubar.h" #include <qapplication.h> #include <qguardedptr.h> #include <qtimer.h> class QMenuBarHack : public QMenuBar { public: int activeItem() const { return actItem; } void goodbye() { activateItemAt(-1); for ( unsigned int i = 0; i < count(); i++ ) { QMenuItem *mi = findItem( idAt(i) ); if ( mi->popup() ) { mi->popup()->hide(); } } } }; +// Sharp ROM compatibility +void QPEMenuToolFocusManager::setMenukeyEnabled ( bool ) +{ +} +int QPEMenuBar::getOldFocus ( ) +{ + return 0; +} + QPEMenuToolFocusManager *QPEMenuToolFocusManager::me = 0; QPEMenuToolFocusManager::QPEMenuToolFocusManager() : QObject() { qApp->installEventFilter( this ); } void QPEMenuToolFocusManager::addWidget( QWidget *w ) { list.append( GuardedWidget(w) ); } void QPEMenuToolFocusManager::removeWidget( QWidget *w ) { list.remove( GuardedWidget(w) ); } void QPEMenuToolFocusManager::setActive( bool a ) { if ( a ) { oldFocus = qApp->focusWidget(); QValueList<GuardedWidget>::Iterator it; it = list.begin(); while ( it != list.end() ) { QWidget *w = (*it); if ( w && w->isEnabled() && w->isVisible() && w->topLevelWidget() == qApp->activeWindow() ) { setFocus( w ); return; } ++it; } } else { if ( inFocus ) { if ( inFocus->inherits( "QMenuBar" ) ) ((QMenuBarHack *)(QWidget *)inFocus)->goodbye(); if ( inFocus->hasFocus() ) { if ( oldFocus && oldFocus->isVisible() && oldFocus->isEnabled() ) { oldFocus->setFocus(); } else { inFocus->clearFocus(); } } } inFocus = 0; oldFocus = 0; } } bool QPEMenuToolFocusManager::isActive() const { return !inFocus.isNull(); } void QPEMenuToolFocusManager::moveFocus( bool next ) { if ( !isActive() ) return; int n = list.count(); QValueList<GuardedWidget>::Iterator it; it = list.find( inFocus ); if ( it == list.end() ) it = list.begin(); while ( --n ) { if ( next ) { ++it; if ( it == list.end() ) it = list.begin(); } else { if ( it == list.begin() ) it = list.end(); --it; } QWidget *w = (*it); if ( w && w->isEnabled() && w->isVisible() && !w->inherits("QToolBarSeparator") && w->topLevelWidget() == qApp->activeWindow() ) { setFocus( w, next ); return; } } } void QPEMenuToolFocusManager::initialize() { if ( !me ) me = new QPEMenuToolFocusManager; } QPEMenuToolFocusManager *QPEMenuToolFocusManager::manager() { if ( !me ) me = new QPEMenuToolFocusManager; return me; } void QPEMenuToolFocusManager::setFocus( QWidget *w, bool next ) { inFocus = w; // qDebug( "Set focus on %s", w->className() ); if ( inFocus->inherits( "QMenuBar" ) ) { QMenuBar *mb = (QMenuBar *)(QWidget *)inFocus; if ( next ) mb->activateItemAt( 0 ); else mb->activateItemAt( mb->count()-1 ); } inFocus->setFocus(); } bool QPEMenuToolFocusManager::eventFilter( QObject *object, QEvent *event ) { if ( event->type() == QEvent::KeyPress ) { QKeyEvent *ke = (QKeyEvent *)event; if ( isActive() ) { if ( object->inherits( "QButton" ) ) { switch ( ke->key() ) { case Key_Left: moveFocus( FALSE ); return TRUE; case Key_Right: moveFocus( TRUE ); return TRUE; case Key_Up: case Key_Down: |