From c8bb01e2284b0570872be5f638b640d22ae247c8 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Thu, 29 Oct 2009 21:08:34 +0200 Subject: Disable keyboard shortcuts in windows with text input. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Disable items shortcuts in setup window. Disable all shortcuts in ItemAmount window. Reviewed-by: Thorbjørn Lindeijer --- src/game.cpp | 2 +- src/gui/itemamount.cpp | 11 +++++++++++ src/gui/itemamount.h | 4 ++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/game.cpp b/src/game.cpp index 15d70adc..644da530 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -755,7 +755,7 @@ void Game::handleInput() const int tKey = keyboard.getKeyIndex(event.key.keysym.sym); // Do not activate shortcuts if tradewindow is visible - if (!tradeWindow->isVisible()) + if (!tradeWindow->isVisible() && !setupWindow->isVisible()) { // Checks if any item shortcut is pressed. for (int i = KeyboardConfig::KEY_SHORTCUT_1; diff --git a/src/gui/itemamount.cpp b/src/gui/itemamount.cpp index 20834c54..71e19e3c 100644 --- a/src/gui/itemamount.cpp +++ b/src/gui/itemamount.cpp @@ -33,6 +33,7 @@ #include "gui/widgets/icon.h" #include "item.h" +#include "keyboardconfig.h" #include "net/inventoryhandler.h" #include "net/net.h" @@ -73,6 +74,10 @@ ItemAmountWindow::ItemAmountWindow(Usage usage, Window *parent, Item *item, if (!mMax) mMax = mItem->getQuantity(); + // Save keyboard state + mEnabledKeyboard = keyboard.isEnabled(); + keyboard.setEnabled(false); + // Integer field mItemAmountTextField = new IntTextField(1); mItemAmountTextField->setRange(1, mMax); @@ -224,3 +229,9 @@ void ItemAmountWindow::showWindow(Usage usage, Window *parent, Item *item, new ItemAmountWindow(usage, parent, item, maxRange); } } + +void ItemAmountWindow::scheduleDelete() +{ + keyboard.setEnabled(mEnabledKeyboard); + Window::scheduleDelete(); +} diff --git a/src/gui/itemamount.h b/src/gui/itemamount.h index 214f8b6b..52b72a38 100644 --- a/src/gui/itemamount.h +++ b/src/gui/itemamount.h @@ -77,6 +77,8 @@ class ItemAmountWindow : public Window, static void showWindow(Usage usage, Window *parent, Item *item, int maxRange = 0); + void scheduleDelete(); + private: static void finish(Item *item, int amount, Usage usage); @@ -95,6 +97,8 @@ class ItemAmountWindow : public Window, * Item Amount buttons. */ gcn::Slider *mItemAmountSlide; + + bool mEnabledKeyboard; }; #endif /* ITEM_AMOUNT_WINDOW_H */ -- cgit v1.2.3-70-g09d2