[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