changeset 20046:2535b9ffa2fc

Qt EditControl: do callback always on return pressed (Bug #44690) * libgui/graphics/TextEdit.h (returnPressed): new signal * libgui/graphics/TextEdit.cpp (TextEdit::keyPressEvent): emit returnPressed instread of editingFinished * libgui/graphics/EditControl.cc (EditControl::returnPressed): new function (EditControl::EditControl): connect edit control returnPressed to our returnPressed.
author John Donoghue
date Wed, 01 Apr 2015 16:00:35 -0400
parents b08c13ed4a8c
children b66ab1af5a3b
files libgui/graphics/EditControl.cc libgui/graphics/EditControl.h libgui/graphics/TextEdit.cc libgui/graphics/TextEdit.h
diffstat 4 files changed, 25 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/libgui/graphics/EditControl.cc	Wed Apr 01 15:16:14 2015 -0400
+++ b/libgui/graphics/EditControl.cc	Wed Apr 01 16:00:35 2015 -0400
@@ -82,6 +82,8 @@
            SLOT (textChanged (void)));
   connect (edit, SIGNAL (editingFinished (void)),
            SLOT (editingFinished (void)));
+  connect (edit, SIGNAL (returnPressed (void)),
+           SLOT (returnPressed (void)));
 }
 
 EditControl::EditControl (const graphics_object& go, TextEdit* edit)
@@ -109,6 +111,8 @@
            SLOT (textChanged (void)));
   connect (edit, SIGNAL (editingFinished (void)),
            SLOT (editingFinished (void)));
+  connect (edit, SIGNAL (returnPressed (void)),
+           SLOT (returnPressed (void)));
 }
 
 EditControl::~EditControl (void)
@@ -214,6 +218,24 @@
   m_textChanged = true;
 }
 
+void 
+EditControl::returnPressed (void)
+{
+  QString txt = (m_multiLine
+                 ? qWidget<TextEdit> ()->toPlainText ()
+                 : qWidget<QLineEdit> ()->text ());
+
+  if (m_textChanged)
+    {
+      gh_manager::post_set (m_handle, "string", Utils::toStdString (txt), false);
+
+      m_textChanged = false;
+    }
+
+  if (txt.length () > 0)
+    gh_manager::post_callback (m_handle, "callback");
+}
+
 void
 EditControl::editingFinished (void)
 {
--- a/libgui/graphics/EditControl.h	Wed Apr 01 15:16:14 2015 -0400
+++ b/libgui/graphics/EditControl.h	Wed Apr 01 16:00:35 2015 -0400
@@ -57,6 +57,7 @@
 private slots:
   void textChanged (void);
   void editingFinished (void);
+  void returnPressed (void);
 
 private:
   bool m_multiLine;
--- a/libgui/graphics/TextEdit.cc	Wed Apr 01 15:16:14 2015 -0400
+++ b/libgui/graphics/TextEdit.cc	Wed Apr 01 16:00:35 2015 -0400
@@ -47,7 +47,7 @@
   if ((xevent->key () == Qt::Key_Return
        || xevent->key () == Qt::Key_Enter)
       && xevent->modifiers () == Qt::ControlModifier)
-    emit editingFinished ();
+    emit returnPressed ();
 }
 
 }; // namespace QtHandles
--- a/libgui/graphics/TextEdit.h	Wed Apr 01 15:16:14 2015 -0400
+++ b/libgui/graphics/TextEdit.h	Wed Apr 01 16:00:35 2015 -0400
@@ -38,6 +38,7 @@
 
 signals:
   void editingFinished (void);
+  void returnPressed (void);
 
 protected:
   void focusOutEvent (QFocusEvent* event);