From bad94e00c11230015aa7e3b19c07631f869c6854 Mon Sep 17 00:00:00 2001 From: Salvatore Larosa Date: Tue, 23 Sep 2014 10:33:21 +0200 Subject: [PATCH] [expression builder] fixes #11247 --- src/gui/qgscodeeditor.cpp | 8 ++++++++ src/gui/qgscodeeditor.h | 5 +++++ src/gui/qgsexpressionbuilderwidget.cpp | 6 +++--- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/gui/qgscodeeditor.cpp b/src/gui/qgscodeeditor.cpp index c4d61f42b4f..14142247176 100644 --- a/src/gui/qgscodeeditor.cpp +++ b/src/gui/qgscodeeditor.cpp @@ -106,6 +106,14 @@ void QgsCodeEditor::setFoldingVisible( bool folding ) } } +void QgsCodeEditor::insertText( QString theText ) +{ + int line, index; + getCursorPosition( &line, &index ); + insertAt( theText, line, index ); + setCursorPosition( line, index + theText.length() ); +} + // Settings for font and fontsize bool QgsCodeEditor::isFixedPitch( const QFont& font ) { diff --git a/src/gui/qgscodeeditor.h b/src/gui/qgscodeeditor.h index 457f86a7ed1..525731a2073 100644 --- a/src/gui/qgscodeeditor.h +++ b/src/gui/qgscodeeditor.h @@ -60,6 +60,11 @@ class GUI_EXPORT QgsCodeEditor : public QsciScintilla void setFoldingVisible( bool folding ); bool foldingVisible() { return mFolding; } + /** Isert text at cursor position + * @param theText The text to be inserted + */ + void insertText( QString theText ); + protected: bool isFixedPitch( const QFont& font ); diff --git a/src/gui/qgsexpressionbuilderwidget.cpp b/src/gui/qgsexpressionbuilderwidget.cpp index 56c719cb94d..1231334e08b 100644 --- a/src/gui/qgsexpressionbuilderwidget.cpp +++ b/src/gui/qgsexpressionbuilderwidget.cpp @@ -158,7 +158,7 @@ void QgsExpressionBuilderWidget::on_expressionTree_doubleClicked( const QModelIn return; // Insert the expression text. - txtExpressionString->insert( item->getExpressionText() ); + txtExpressionString->insertText( item->getExpressionText() ); txtExpressionString->setFocus(); } @@ -392,14 +392,14 @@ void QgsExpressionBuilderWidget::on_lblPreview_linkActivated( QString link ) void QgsExpressionBuilderWidget::on_mValueListWidget_itemDoubleClicked( QListWidgetItem *item ) { - txtExpressionString->insert( " " + item->text() + " " ); + txtExpressionString->insertText( " " + item->text() + " " ); txtExpressionString->setFocus(); } void QgsExpressionBuilderWidget::operatorButtonClicked() { QPushButton* button = dynamic_cast( sender() ); - txtExpressionString->insert( " " + button->text() + " " ); + txtExpressionString->insertText( " " + button->text() + " " ); txtExpressionString->setFocus(); }