All pastes #1829092 Raw Edit

Someone

public diff v1 · immutable
#1829092 ·published 2010-03-08 21:10 UTC
rendered paste body
From c4572cedbe7196f1414978412d532ef109af842b Mon Sep 17 00:00:00 2001From: Andrei Karas <akaras@inbox.ru>Date: Mon, 8 Mar 2010 22:37:44 +0200Subject: [PATCH] Add unassign button in setup keyboard tab.--- src/gui/setup_keyboard.cpp |   19 ++++++++++++++++++- src/gui/setup_keyboard.h   |    1 + src/keyboardconfig.cpp     |    6 ++++++ 3 files changed, 25 insertions(+), 1 deletions(-)diff --git a/src/gui/setup_keyboard.cpp b/src/gui/setup_keyboard.cppindex da473ae..f5d6476 100644--- a/src/gui/setup_keyboard.cpp+++ b/src/gui/setup_keyboard.cpp@@ -87,6 +87,10 @@ Setup_Keyboard::Setup_Keyboard():     mAssignKeyButton->addActionListener(this);     mAssignKeyButton->setEnabled(false); +    mUnAssignKeyButton = new Button(_("UnAssign"), "unassign", this);+    mUnAssignKeyButton->addActionListener(this);+    mUnAssignKeyButton->setEnabled(false);+     mMakeDefaultButton = new Button(_("Default"), "makeDefault", this);     mMakeDefaultButton->addActionListener(this); @@ -96,7 +100,8 @@ Setup_Keyboard::Setup_Keyboard():      place(0, 0, scrollArea, 4, 6).setPadding(2);     place(0, 6, mMakeDefaultButton);-    place(3, 6, mAssignKeyButton);+    place(2, 6, mAssignKeyButton);+    place(3, 6, mUnAssignKeyButton);      setDimension(gcn::Rectangle(0, 0, 365, 280)); }@@ -107,6 +112,7 @@ Setup_Keyboard::~Setup_Keyboard()     delete mKeyListModel;      delete mAssignKeyButton;+    delete mUnAssignKeyButton;     delete mMakeDefaultButton; } @@ -138,7 +144,10 @@ void Setup_Keyboard::action(const gcn::ActionEvent &event)     if (event.getSource() == mKeyList)     {         if (!mKeySetting)+        {             mAssignKeyButton->setEnabled(true);+            mUnAssignKeyButton->setEnabled(true);+        }     }     else if (event.getId() == "assign")     {@@ -149,6 +158,14 @@ void Setup_Keyboard::action(const gcn::ActionEvent &event)         keyboard.setNewKeyIndex(i);         mKeyListModel->setElementAt(i, keyboard.getKeyCaption(i) + ": ?");     }+    else if (event.getId() == "unassign")+    {+        int i(mKeyList->getSelected());+        keyboard.setNewKeyIndex(i);+        refreshAssignedKey(mKeyList->getSelected());+        keyboard.setNewKey(keyboard.KEY_NO_VALUE);+        mAssignKeyButton->setEnabled(true);+    }     else if (event.getId() == "makeDefault")     {         keyboard.makeDefault();diff --git a/src/gui/setup_keyboard.h b/src/gui/setup_keyboard.hindex 69c2d58..28f6f9a 100644--- a/src/gui/setup_keyboard.h+++ b/src/gui/setup_keyboard.h@@ -72,6 +72,7 @@ class Setup_Keyboard : public SetupTab, public gcn::ActionListener         gcn::ListBox *mKeyList;          gcn::Button *mAssignKeyButton;+        gcn::Button *mUnAssignKeyButton;         gcn::Button *mMakeDefaultButton;          bool mKeySetting; /**< flag to check if key being set. */diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cppindex 7b462c2..65143d6 100644--- a/src/keyboardconfig.cpp+++ b/src/keyboardconfig.cpp@@ -154,8 +154,14 @@ bool KeyboardConfig::hasConflicts()      */     for (i = 0; i < KEY_TOTAL; i++)     {+        if (mKey[i].value == KEY_NO_VALUE)+            continue;+         for (j = i, j++; j < KEY_TOTAL; j++)         {+            if (mKey[j].value == KEY_NO_VALUE)+                continue;+             // Allow collisions between shortcut and emote keys             if ((i >= KEY_SHORTCUT_1 && i <= KEY_SHORTCUT_12) && (j >= KEY_EMOTE_1 && j <= KEY_EMOTE_12))                 continue;-- 1.7.0