[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: playground/utils/charm/trunk/Charm
From: Mike Arthur <mike () mikearthur ! co ! uk>
Date: 2010-02-05 18:58:05
Message-ID: 1265396285.060151.32224.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 1085693 by mikearthur:
Implement Cocoa shortcut handling.
M +10 -2 Application.h
M +15 -8 CMakeLists.txt
A MacApplication.cpp [License: UNKNOWN]
A MacApplication.h [License: UNKNOWN]
M +12 -40 MacCarbonApplication.cpp
M +2 -5 MacCarbonApplication.h
A MacCocoaApplication.h [License: UNKNOWN]
A MacCocoaApplication.mm
--- trunk/playground/utils/charm/trunk/Charm/Application.h #1085692:1085693
@@ -13,8 +13,12 @@
#include <QSystemTrayIcon>
#include <QMenu>
#include <QAction>
-#if defined Q_WS_MAC && !defined QT_MAC_USE_COCOA
+#ifdef Q_WS_MAC
+#ifdef QT_MAC_USE_COCOA
+#include "MacCocoaApplication.h"
+#else
#include "MacCarbonApplication.h"
+#endif
#else
#include <QApplication>
#endif
@@ -37,8 +41,12 @@
// FIXME read configuration name from command line
class IdleDetector;
-#if defined Q_WS_MAC && !defined QT_MAC_USE_COCOA
+#ifdef Q_WS_MAC
+#ifdef QT_MAC_USE_COCOA
+typedef MacCocoaApplication ApplicationBase;
+#else
typedef MacCarbonApplication ApplicationBase;
+#endif
#else
typedef QApplication ApplicationBase;
#endif
--- trunk/playground/utils/charm/trunk/Charm/CMakeLists.txt #1085692:1085693
@@ -61,16 +61,23 @@
Idle/X11IdleDetector.cpp
)
set(HAVE_LIBXSS 0)
- IF( APPLE AND NOT QT_MAC_USE_COCOA )
- SET( CharmApplication_SRCS
- ${CharmApplication_SRCS} Idle/MacCarbonIdleDetector.cpp
- MacCarbonApplication.cpp )
+ IF( APPLE )
+ SET( CharmApplication_SRCS ${CharmApplication_SRCS} MacApplication.cpp )
+ IF( QT_MAC_USE_COCOA )
+ SET( CharmApplication_SRCS
+ ${CharmApplication_SRCS} #Idle/MacCocoaIdleDetector.mm
+ MacCocoaApplication.mm )
+ ELSE( QT_MAC_USE_COCOA )
+ SET( CharmApplication_SRCS
+ ${CharmApplication_SRCS} Idle/MacCarbonIdleDetector.cpp
+ MacCarbonApplication.cpp )
+ ENDIF( QT_MAC_USE_COCOA )
EXEC_PROGRAM( sw_vers ARGS -buildVersion OUTPUT_VARIABLE DARWIN_BUILDVERSION )
STRING(REGEX MATCH "^[0-9]+" DARWIN_VERSION ${DARWIN_BUILDVERSION})
# MESSAGE(STATUS "DARWIN_VERSION=${DARWIN_VERSION}")
ADD_DEFINITIONS( -DDARWIN_VERSION=${DARWIN_VERSION} )
- ELSE( APPLE AND NOT QT_MAC_USE_COCOA )
- IF( UNIX AND NOT APPLE )
+ ELSE( APPLE )
+ IF( UNIX )
include(FindX11)
if(X11_FOUND)
INCLUDE_DIRECTORIES( ${X11_INCLUDE_DIR} )
@@ -82,8 +89,8 @@
message("Please install libXss-dev to get idle detection to \
work on Linux") endif(X11_Xscreensaver_LIB)
endif(X11_FOUND)
- ENDIF( UNIX AND NOT APPLE )
- ENDIF( APPLE AND NOT QT_MAC_USE_COCOA )
+ ENDIF( UNIX )
+ ENDIF( APPLE )
configure_file(config-charm.h.cmake \
${CMAKE_CURRENT_BINARY_DIR}/config-charm.h )
--- trunk/playground/utils/charm/trunk/Charm/MacCarbonApplication.cpp \
#1085692:1085693 @@ -6,6 +6,11 @@
#include <QShortcut>
#include <QTextCodec>
+/*
+ * Most of the code below has been taken from private files in Qt,
+ * specifically src/gui/kernel/qkeymapper_mac.cpp
+ */
+
/* key maps */
struct qt_mac_enum_mapper
{
@@ -303,7 +308,7 @@
static QTextCodec *c = 0;
if(!c)
c = QTextCodec::codecForName("Apple Roman");
- char tmpChar = static_cast< char >( translatedChar ); // **sigh**
+ char tmpChar = static_cast< char >( translatedChar ); // **sigh**
*outChar = c->toUnicode(&tmpChar, 1).at(0);
} else {
*qtKey = qt_mac_get_key(*outModifiers, QChar(translatedChar), \
keyCode); @@ -371,7 +376,7 @@
}
MacCarbonApplication::MacCarbonApplication( int& argc, char* argv[] )
- : QApplication( argc, argv )
+ : MacApplication( argc, argv )
{
}
@@ -379,39 +384,6 @@
{
}
-static QList< QShortcut* > shortcuts( QWidget* parent = 0 )
-{
- QList< QShortcut* > result;
- if( parent == 0 )
- {
- const QWidgetList widgets = QApplication::topLevelWidgets();
- for( QWidgetList::const_iterator it = widgets.begin(); it != widgets.end(); \
++it )
- result += shortcuts( *it );
- }
- else
- {
- const QList< QShortcut* > cuts = parent->findChildren< QShortcut* >();
- for( QList< QShortcut* >::const_iterator it = cuts.begin(); it != \
cuts.end(); ++it )
- if( (*it)->context() == Qt::ApplicationShortcut )
- result.push_back( *it );
-
- const QList< QWidget* > children = parent->findChildren< QWidget* >();
- for( QList< QWidget* >::const_iterator it = children.begin(); it != \
children.end(); ++it )
- result += shortcuts( *it );
- }
- return result;
-}
-
-static QList< QShortcut* > activeShortcuts( const QKeySequence& seq, bool autorep, \
QWidget* parent = 0 )
-{
- const QList< QShortcut* > cuts = shortcuts( parent );
- QList< QShortcut* > result;
- for( QList< QShortcut* >::const_iterator it = cuts.begin(); it != cuts.end(); \
++it )
- if( (*it)->context() == Qt::ApplicationShortcut && ((*it)->autoRepeat() == \
autorep || !autorep ) && (*it)->isEnabled() && (*it)->key().matches( \
seq ) )
- result.push_back( *it );
- return result;
-}
-
bool MacCarbonApplication::macEventFilter( EventHandlerCallRef caller, EventRef \
event ) {
switch( GetEventClass( event ) )
@@ -425,32 +397,32 @@
qt_mac_send_modifiers_changed( modifiers, this );
break;
}
-
+
Qt::KeyboardModifiers modifiers;
int qtKey;
QChar ourChar;
bool handled;
if( !translateKeyEventInternal( caller, event, &qtKey, &ourChar, &modifiers, \
&handled ) ) return false;
-
+
const bool autorep = GetEventKind( event ) == kEventRawKeyRepeat;
if( GetEventKind( event ) == kEventRawKeyUp )
break;
-
+
const QKeySequence seq( qtKey | modifiers );
const QList< QShortcut* > active = activeShortcuts( seq, autorep );
for( QList< QShortcut* >::const_iterator it = active.begin(); it != \
active.end(); ++it ) {
QShortcutEvent event( seq, (*it)->id() );
QObject* const receiver = *it;
- receiver->event( &event );
+ receiver->event( &event );
}
return !active.isEmpty();
}
case kEventClassAppleEvent:
emit dockIconClicked();
}
- return QApplication::macEventFilter( caller, event );
+ return MacApplication::macEventFilter( caller, event );
}
#include "MacCarbonApplication.moc"
--- trunk/playground/utils/charm/trunk/Charm/MacCarbonApplication.h #1085692:1085693
@@ -1,9 +1,9 @@
#ifndef MACCARBONAPPLICATION_H
#define MACCARBONAPPLICATION_H
-#include <QApplication>
+#include "MacApplication.h"
-class MacCarbonApplication : public QApplication
+class MacCarbonApplication : public MacApplication
{
Q_OBJECT
public:
@@ -12,9 +12,6 @@
protected:
bool macEventFilter( EventHandlerCallRef caller, EventRef event );
-
-Q_SIGNALS:
- void dockIconClicked();
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic