[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: KDE/kdelibs/kdecore
From: Luboš Luňák <l.lunak () kde ! org>
Date: 2005-08-02 13:25:08
Message-ID: 1122989108.215018.18438.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 442362 by lunakl:
Forward port of #108961.
M +6 -1 kaccelbase.cpp
M +1 -0 kaccelbase.h
M +7 -1 kapplication.cpp
M +6 -0 kglobalaccel.cpp
M +9 -0 kglobalaccel.h
M +42 -8 kglobalaccel_x11.cpp
M +7 -0 kglobalaccel_x11.h
M +1 -0 kipc.h
--- trunk/KDE/kdelibs/kdecore/kaccelbase.cpp #442361:442362
@@ -63,6 +63,11 @@
uint KAccelBase::actionCount() const { return m_rgActions.count(); }
KAccelActions& KAccelBase::actions() { return m_rgActions; }
bool KAccelBase::isEnabled() const { return m_bEnabled; }
+// see KGlobalAccel::blockShortcuts() stuff - it's to temporarily block
+// all global shortcuts, so that the key grabs are released, but from the app's
+// point of view the KGlobalAccel is still enabled, so KGlobalAccel needs
+// to disable key grabbing even if enabled
+bool KAccelBase::isEnabledInternal() const { return isEnabled(); }
KAccelAction* KAccelBase::actionPtr( const QString& sAction )
{ return m_rgActions.actionPtr( sAction ); }
@@ -417,7 +422,7 @@
void KAccelBase::createKeyList( Q3ValueVector<struct X>& rgKeys )
{
//kdDebug(125) << "KAccelBase::createKeyList()" << endl;
- if( !m_bEnabled )
+ if( !isEnabledInternal())
return;
// create the list
--- trunk/KDE/kdelibs/kdecore/kaccelbase.h #442361:442362
@@ -198,6 +198,7 @@
virtual bool disconnectKey( const KKeyServer::Key& ) = 0;
protected:
+ virtual bool isEnabledInternal() const;
struct ActionInfo
{
KAccelAction* pAction;
--- trunk/KDE/kdelibs/kdecore/kapplication.cpp #442361:442362
@@ -76,6 +76,7 @@
#include <kprotocolinfo.h>
#include <kkeynative.h>
#include <kcodecs.h>
+#include <kglobalaccel.h>
#if defined Q_WS_X11
#include <QtGui/qx11info_x11.h>
@@ -808,7 +809,7 @@
kipcEventMask = (1 << KIPC::StyleChanged) | (1 << KIPC::PaletteChanged) |
(1 << KIPC::FontChanged) | (1 << KIPC::BackgroundChanged) |
(1 << KIPC::ToolbarStyleChanged) | (1 << KIPC::SettingsChanged) |
- (1 << KIPC::ClipboardConfigChanged);
+ (1 << KIPC::ClipboardConfigChanged) | (1 << KIPC::BlockShortcuts);
#endif
// Trigger creation of locale.
@@ -1764,6 +1765,11 @@
case KIPC::ClipboardConfigChanged:
KClipboardSynchronizer::newConfiguration(arg);
break;
+
+ case KIPC::BlockShortcuts:
+ KGlobalAccel::blockShortcuts(arg);
+ emit kipcMessage(id, arg); // some apps may do additional things
+ break;
}
}
else if (id >= 32)
--- trunk/KDE/kdelibs/kdecore/kglobalaccel.cpp #442361:442362
@@ -65,6 +65,12 @@
void KGlobalAccel::setEnabled( bool bEnabled )
{ d->setEnabled( bEnabled ); }
+void KGlobalAccel::blockShortcuts( bool block )
+ { KGlobalAccelPrivate::blockShortcuts( block ); }
+
+void KGlobalAccel::disableBlocking( bool disable )
+ { d->disableBlocking( disable ); }
+
KAccelAction* KGlobalAccel::insert( const QString& sAction, const QString& sDesc, \
const QString& sHelp, const KShortcut& cutDef3, const KShortcut& cutDef4,
const QObject* pObjSlot, const char* psMethodSlot,
--- trunk/KDE/kdelibs/kdecore/kglobalaccel.h #442361:442362
@@ -206,6 +206,15 @@
* KAccelActions::useFourModifierKeys().
*/
static bool useFourModifierKeys();
+
+ /**
+ * @internal
+ */
+ static void blockShortcuts( bool block );
+ /**
+ * @internal
+ */
+ void disableBlocking( bool disable );
private:
--- trunk/KDE/kdelibs/kdecore/kglobalaccel_x11.cpp #442361:442362
@@ -75,9 +75,16 @@
//----------------------------------------------------
+static QLinkedList< KGlobalAccelPrivate* >* all_accels;
+
KGlobalAccelPrivate::KGlobalAccelPrivate()
: KAccelBase( KAccelBase::NATIVE_KEYS )
+, m_blocked( false )
+, m_blockingDisabled( false )
{
+ if( all_accels == NULL )
+ all_accels = new QLinkedList< KGlobalAccelPrivate* >;
+ all_accels->append( this );
m_sConfigGroup = "Global Shortcuts";
kapp->installX11EventFilter( this );
}
@@ -88,6 +95,11 @@
//for( CodeModMap::ConstIterator it = m_rgCodeModToAction.begin(); it != \
m_rgCodeModToAction.end(); ++it ) { // const CodeMod& codemod = it.key();
//}
+ all_accels->removeAll( this );
+ if( all_accels->count() == 0 ) {
+ delete all_accels;
+ all_accels = NULL;
+ }
}
void KGlobalAccelPrivate::setEnabled( bool bEnable )
@@ -96,6 +108,30 @@
updateConnections();
}
+void KGlobalAccelPrivate::blockShortcuts( bool block )
+{
+ if( all_accels == NULL )
+ return;
+ for( QLinkedList< KGlobalAccelPrivate* >::ConstIterator it = \
all_accels->begin(); + it != all_accels->end();
+ ++it ) {
+ if( (*it)->m_blockingDisabled )
+ continue;
+ (*it)->m_blocked = block;
+ (*it)->updateConnections();
+ }
+}
+
+void KGlobalAccelPrivate::disableBlocking( bool block )
+{
+ m_blockingDisabled = block;
+}
+
+bool KGlobalAccelPrivate::isEnabledInternal() const
+{
+ return KAccelBase::isEnabled() && !m_blocked;
+}
+
bool KGlobalAccelPrivate::emitSignal( Signal )
{
return false;
@@ -215,13 +251,11 @@
void KGlobalAccelPrivate::x11MappingNotify()
{
kdDebug(125) << "KGlobalAccelPrivate::x11MappingNotify()" << endl;
- if( m_bEnabled ) {
- // Maybe the X modifier map has been changed.
- KKeyServer::initializeMods();
- calculateGrabMasks();
- // Do new XGrabKey()s.
- updateConnections();
- }
+ // Maybe the X modifier map has been changed.
+ KKeyServer::initializeMods();
+ calculateGrabMasks();
+ // Do new XGrabKey()s.
+ updateConnections();
}
bool KGlobalAccelPrivate::x11KeyPress( const XEvent *pEvent )
@@ -232,7 +266,7 @@
XFlush( QX11Info::display()); // avoid X(?) bug
}
- if( !m_bEnabled )
+ if( !isEnabledInternal())
return false;
CodeMod codemod;
--- trunk/KDE/kdelibs/kdecore/kglobalaccel_x11.h #442361:442362
@@ -93,9 +93,16 @@
void x11MappingNotify();
bool x11KeyPress( const XEvent *pEvent );
void activate( KAccelAction* pAction, const KKeySequence& seq );
+ virtual bool isEnabledInternal() const;
+ static void blockShortcuts( bool block );
+ void disableBlocking( bool disable );
+
protected slots:
void slotActivated( int iAction );
+ private:
+ bool m_blocked;
+ bool m_blockingDisabled;
};
#endif // _KGLOBALACCEL_X11_H
--- trunk/KDE/kdelibs/kdecore/kipc.h #442361:442362
@@ -56,6 +56,7 @@
enum Message { PaletteChanged=0, FontChanged, StyleChanged,
BackgroundChanged, SettingsChanged, IconChanged, \
ToolbarStyleChanged, ClipboardConfigChanged, /// @since 3.1
+ BlockShortcuts, /// @since 3.5
UserMessage=32 };
/**
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic