[aseprite] 196/250: Improve font selection with keyboard in PasteTextCommand
Tobias Hansen
thansen at moszumanska.debian.org
Sun Dec 20 15:27:30 UTC 2015
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit 62a16d05253124b9fa81f060a4b63230bfa4b10b
Author: David Capello <davidcapello at gmail.com>
Date: Mon Oct 19 15:32:44 2015 -0300
Improve font selection with keyboard in PasteTextCommand
---
data/widgets/font_popup.xml | 2 +-
src/app/commands/cmd_paste_text.cpp | 5 +++++
src/app/ui/font_popup.cpp | 5 ++++-
src/ui/popup_window.cpp | 20 +++++++++++++-------
src/ui/popup_window.h | 12 ++++++++++--
5 files changed, 33 insertions(+), 11 deletions(-)
diff --git a/data/widgets/font_popup.xml b/data/widgets/font_popup.xml
index b890db8..991f037 100644
--- a/data/widgets/font_popup.xml
+++ b/data/widgets/font_popup.xml
@@ -6,7 +6,7 @@
<view id="view" expansive="true" />
<hbox>
<boxfiller />
- <button id="load_font" text="Load" width="80" />
+ <button id="load_font" text="Load" magnet="true" width="80" />
</hbox>
</vbox>
</gui>
diff --git a/src/app/commands/cmd_paste_text.cpp b/src/app/commands/cmd_paste_text.cpp
index 6c1c608..043d329 100644
--- a/src/app/commands/cmd_paste_text.cpp
+++ b/src/app/commands/cmd_paste_text.cpp
@@ -109,6 +109,7 @@ private:
try {
m_fontPopup.reset(new FontPopup());
m_fontPopup->Load.connect(&PasteTextWindow::setFontFace, this);
+ m_fontPopup->Close.connect(Bind<void>(&PasteTextWindow::onCloseFontPopup, this));
}
catch (const std::exception& ex) {
Console::showException(ex);
@@ -127,6 +128,10 @@ private:
}
}
+ void onCloseFontPopup() {
+ fontFace()->dropDown()->requestFocus();
+ }
+
std::string m_face;
base::UniquePtr<FontPopup> m_fontPopup;
};
diff --git a/src/app/ui/font_popup.cpp b/src/app/ui/font_popup.cpp
index 3228e0d..7e5a201 100644
--- a/src/app/ui/font_popup.cpp
+++ b/src/app/ui/font_popup.cpp
@@ -118,7 +118,9 @@ private:
};
FontPopup::FontPopup()
- : PopupWindow("Fonts", kCloseOnClickInOtherWindow)
+ : PopupWindow("Fonts",
+ kCloseOnClickInOtherWindow,
+ kDoNothingOnEnter)
, m_popup(new gen::FontPopup())
{
setAutoRemap(false);
@@ -127,6 +129,7 @@ FontPopup::FontPopup()
addChild(m_popup);
m_popup->loadFont()->Click.connect(Bind<void>(&FontPopup::onLoadFont, this));
+ m_listBox.setFocusMagnet(true);
m_listBox.Change.connect(Bind<void>(&FontPopup::onChangeFont, this));
m_listBox.DoubleClickItem.connect(Bind<void>(&FontPopup::onLoadFont, this));
diff --git a/src/ui/popup_window.cpp b/src/ui/popup_window.cpp
index d70d173..cf288d2 100644
--- a/src/ui/popup_window.cpp
+++ b/src/ui/popup_window.cpp
@@ -19,9 +19,12 @@ namespace ui {
using namespace gfx;
-PopupWindow::PopupWindow(const std::string& text, ClickBehavior clickBehavior)
+PopupWindow::PopupWindow(const std::string& text,
+ ClickBehavior clickBehavior,
+ EnterBehavior enterBehavior)
: Window(WithTitleBar, text)
, m_clickBehavior(clickBehavior)
+ , m_enterBehavior(enterBehavior)
, m_filtering(false)
{
setSizeable(false);
@@ -83,7 +86,7 @@ bool PopupWindow::onProcessMessage(Message* msg)
case kMouseLeaveMessage:
if (m_hotRegion.isEmpty() && !isMoveable())
- closeWindow(NULL);
+ closeWindow(nullptr);
break;
case kKeyDownMessage:
@@ -91,12 +94,15 @@ bool PopupWindow::onProcessMessage(Message* msg)
KeyMessage* keymsg = static_cast<KeyMessage*>(msg);
KeyScancode scancode = keymsg->scancode();
- if (scancode == kKeyEsc ||
- scancode == kKeyEnter ||
- scancode == kKeyEnterPad) {
- closeWindow(NULL);
- }
+ if (scancode == kKeyEsc)
+ closeWindow(nullptr);
+ if (m_enterBehavior == kCloseOnEnter &&
+ (scancode == kKeyEnter ||
+ scancode == kKeyEnterPad)) {
+ closeWindow(this);
+ return true;
+ }
}
break;
diff --git a/src/ui/popup_window.h b/src/ui/popup_window.h
index ee0a5d2..836f4c0 100644
--- a/src/ui/popup_window.h
+++ b/src/ui/popup_window.h
@@ -1,5 +1,5 @@
// Aseprite UI Library
-// Copyright (C) 2001-2013 David Capello
+// Copyright (C) 2001-2013, 2015 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
@@ -21,7 +21,14 @@ namespace ui {
kCloseOnClickOutsideHotRegion
};
- PopupWindow(const std::string& text, ClickBehavior clickBehavior);
+ enum EnterBehavior {
+ kDoNothingOnEnter,
+ kCloseOnEnter,
+ };
+
+ PopupWindow(const std::string& text,
+ ClickBehavior clickBehavior,
+ EnterBehavior enterBehavior = kCloseOnEnter);
~PopupWindow();
void setHotRegion(const gfx::Region& region);
@@ -41,6 +48,7 @@ namespace ui {
void stopFilteringMessages();
ClickBehavior m_clickBehavior;
+ EnterBehavior m_enterBehavior;
gfx::Region m_hotRegion;
bool m_filtering;
};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list