[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/4.0
From:       David Faure <faure () kde ! org>
Date:       2008-01-30 18:02:00
Message-ID: 1201716120.521273.32426.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 768814 by dfaure:

# 2_{kdelibs,kdebase}_default_shortcuts.diff by Aurélien
"This makes KdedGlobalAccel aware of the concept of default and active shortcuts.
"It adds a new method: defaultShortcut(), which is used by the kcm to initialize the \
KAction correctly.


 M  +14 -6     kdebase/workspace/kcontrol/keys/globalshortcuts.cpp  
 M  +20 -1     kdelibs/kdeui/shortcuts/kdedglobalaccel.cpp  
 M  +4 -1      kdelibs/kdeui/shortcuts/kdedglobalaccel.h  
 M  +3 -0      kdelibs/kdeui/shortcuts/kdedglobalaccel_adaptor.h  
 M  +10 -2     kdelibs/kdeui/shortcuts/kglobalaccel.cpp  


--- branches/KDE/4.0/kdebase/workspace/kcontrol/keys/globalshortcuts.cpp \
#768813:768814 @@ -86,17 +86,25 @@
         foreach(const QString &actionText, actions.value() )
         {
             kDebug() << "- action:" << actionText;
-            QStringList actionId;
-            actionId << component << actionText;
-            QDBusReply<QList<int> > shortcut = iface->call("shortcut", \
                qVariantFromValue(actionId));
             QString actionName = QString("%1_%2").arg(component).arg(col->count());
             KAction *action = col->addAction(actionName);
             action->setProperty("isConfigurationAction", QVariant(true));
             action->setText(actionText);
-            if (!shortcut.value().empty()) {
+            QStringList actionId;
+            actionId << component << actionText;
+            QDBusReply<QList<int> > defaultShortcut = iface->call("defaultShortcut", \
qVariantFromValue(actionId)); +            QDBusReply<QList<int> > shortcut = \
iface->call("shortcut", qVariantFromValue(actionId)); +            if \
(!defaultShortcut.value().empty()) +            {
+                int key = defaultShortcut.value().first();
+                kDebug() << "-- defaultShortcut" << KShortcut(key).toString();
+                action->setGlobalShortcut(KShortcut(key), KAction::DefaultShortcut, \
KAction::NoAutoloading); +            }
+            if (!shortcut.value().empty())
+            {
                 int key = shortcut.value().first();
-                action->setGlobalShortcut(KShortcut(key));
-                action->setGlobalShortcutAllowed(true, KAction::NoAutoloading);
+                kDebug() << "-- shortcut" << KShortcut(key).toString();
+                action->setGlobalShortcut(KShortcut(key), KAction::ActiveShortcut, \
KAction::NoAutoloading);  }
         }
     }
--- branches/KDE/4.0/kdelibs/kdeui/shortcuts/kdedglobalaccel.cpp #768813:768814
@@ -60,6 +60,7 @@
     bool isDefaultEmpty : 1;
     QStringList actionId;
     QList<int> keys;
+    QList<int> defaultKeys;
 };
 
 enum IdField
@@ -246,6 +247,15 @@
 }
 
 
+QList<int> KdedGlobalAccel::defaultShortcut(const QStringList &action)
+{
+    actionData *ad = d->findAction(action);
+    if (ad)
+        return ad->defaultKeys;
+    return QList<int>();
+}
+
+
 //TODO: make sure and document that we don't want trailing zero shortcuts in the \
list  QList<int> KdedGlobalAccel::setShortcut(const QStringList &actionId,
                                         const QList<int> &keys, uint flags)
@@ -254,6 +264,7 @@
     const bool isDefaultEmpty = (flags & IsDefaultEmpty);
     const bool setPresent = (flags & SetPresent);
     const bool isAutoloading = !(flags & NoAutoloading);
+    const bool isDefault = (flags & IsDefault);
 
     actionData *ad = d->findAction(actionId);
 
@@ -311,6 +322,8 @@
     ad->isDefaultEmpty = isDefaultEmpty;
     if (setPresent)
         ad->isPresent = true;
+    if (isDefault)
+        ad->defaultKeys = keys;
     ad->keys = keys;
 
     //update keyToAction and find conflicts with other actions
@@ -392,7 +405,13 @@
     foreach (const adHash *const mc, d->mainComponentHashes) {
         foreach (const actionData *const ad, *mc) {
             QString confKey = ad->actionId.join("\01");
-            if (!d->isEmpty(ad->keys))
+            if (ad->keys == ad->defaultKeys)
+            {
+                // If this is a default key, make sure we don't keep an old
+                // custom key in the config file
+                d->configGroup.deleteEntry(confKey);
+            }
+            else if (!d->isEmpty(ad->keys))
                 d->configGroup.writeEntry(confKey, stringFromKeys(ad->keys));
             else
                 d->configGroup.writeEntry(confKey, "none");
--- branches/KDE/4.0/kdelibs/kdeui/shortcuts/kdedglobalaccel.h #768813:768814
@@ -37,7 +37,8 @@
     {
         IsDefaultEmpty = 1,
         SetPresent = 2,
-        NoAutoloading = 4
+        NoAutoloading = 4,
+        IsDefault = 8
     };
 
     KdedGlobalAccel(QObject*, const QList<QVariant>&);
@@ -52,6 +53,8 @@
     QStringList actionId(int key);
     //to be called by main components not owning the action
     QList<int> shortcut(const QStringList &actionId);
+    //to be called by main components not owning the action
+    QList<int> defaultShortcut(const QStringList &actionId);
     //to be called by main components owning the action
     QList<int> setShortcut(const QStringList &actionId,
                            const QList<int> &keys, uint flags);
--- branches/KDE/4.0/kdelibs/kdeui/shortcuts/kdedglobalaccel_adaptor.h #768813:768814
@@ -68,6 +68,9 @@
     //get the keys registered to  action
     inline QList<int> shortcut(const QStringList &actionId)
         { return p()->shortcut(actionId); }
+    //get the default keys registered to action
+    inline QList<int> defaultShortcut(const QStringList &actionId)
+        { return p()->defaultShortcut(actionId); }
     //to be called by main components owning the action
     inline QList<int> setShortcut(const QStringList &actionId, const QList<int> \
&keys, uint flags)  { return p()->setShortcut(actionId, keys, flags); }
--- branches/KDE/4.0/kdelibs/kdeui/shortcuts/kglobalaccel.cpp #768813:768814
@@ -152,10 +152,14 @@
 
     if (!oldEnabled && newEnabled) {
         uint setterFlags = KdedGlobalAccel::SetPresent;
+        KShortcut defaultShortcut = \
action->globalShortcut(KAction::DefaultShortcut); +        KShortcut activeShortcut = \
action->globalShortcut();  if (flags & KAction::NoAutoloading)
             setterFlags |= KdedGlobalAccel::NoAutoloading;
-        if (action->globalShortcut(KAction::DefaultShortcut).isEmpty())
+        if (defaultShortcut.isEmpty())
             setterFlags |= KdedGlobalAccel::IsDefaultEmpty;
+        if (defaultShortcut == activeShortcut)
+            setterFlags |= KdedGlobalAccel::IsDefault;
 
         nameToAction.insert(actionId.at(1), action);
         actionToName.insert(action, actionId.at(1));
@@ -187,10 +191,14 @@
     //TODO: what about i18ned names?
 
     uint setterFlags = 0;
+    KShortcut defaultShortcut = action->globalShortcut(KAction::DefaultShortcut);
+    KShortcut activeShortcut = action->globalShortcut();
     if (flags & KAction::NoAutoloading)
         setterFlags |= KdedGlobalAccel::NoAutoloading;
-    if (action->globalShortcut(KAction::DefaultShortcut).isEmpty())
+    if (defaultShortcut.isEmpty())
         setterFlags |= KdedGlobalAccel::IsDefaultEmpty;
+    if (defaultShortcut == activeShortcut)
+        setterFlags |= KdedGlobalAccel::IsDefault;
 
     QList<int> result = iface.setShortcut(actionId,
                                           \
intListFromShortcut(action->globalShortcut()),


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic