# HG changeset patch # User John Donoghue # Date 1427918435 14400 # Node ID 2535b9ffa2fc4973537091f6df53d84c336f1406 # Parent b08c13ed4a8c96822cd6530df76e135f10f767aa 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. diff -r b08c13ed4a8c -r 2535b9ffa2fc libgui/graphics/EditControl.cc --- 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 ()->toPlainText () + : qWidget ()->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) { diff -r b08c13ed4a8c -r 2535b9ffa2fc libgui/graphics/EditControl.h --- 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; diff -r b08c13ed4a8c -r 2535b9ffa2fc libgui/graphics/TextEdit.cc --- 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 diff -r b08c13ed4a8c -r 2535b9ffa2fc libgui/graphics/TextEdit.h --- 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);