From 165b5c2bfb31a6f4aac96e2e17cc5637046384fa Mon Sep 17 00:00:00 2001 From: "Juergen E. Fischer" Date: Sun, 30 Jun 2019 22:54:57 +0200 Subject: [PATCH] font symbol: add preview in selected font, revert line edit to default font and single character replacement. Insert only with Ctrl or if there is already more than one character selected (followup 46eeaa0b) --- src/gui/symbology/qgssymbollayerwidget.cpp | 20 +++++++++-- src/ui/symbollayer/widget_fontmarker.ui | 39 ++++++++++++++++------ 2 files changed, 45 insertions(+), 14 deletions(-) diff --git a/src/gui/symbology/qgssymbollayerwidget.cpp b/src/gui/symbology/qgssymbollayerwidget.cpp index 09a5194794a..21bbeed8571 100644 --- a/src/gui/symbology/qgssymbollayerwidget.cpp +++ b/src/gui/symbology/qgssymbollayerwidget.cpp @@ -3319,7 +3319,7 @@ void QgsFontMarkerSymbolLayerWidget::setSymbolLayer( QgsSymbolLayer *layer ) } widgetChar->blockSignals( false ); whileBlocking( mCharLineEdit )->setText( mLayer->character() ); - mCharLineEdit->setFont( layerFont ); + mCharPreview->setFont( layerFont ); //block whileBlocking( spinOffsetX )->setValue( mLayer->offset().x() ); @@ -3369,7 +3369,7 @@ void QgsFontMarkerSymbolLayerWidget::setFontFamily( const QFont &font ) { mLayer->setFontFamily( font.family() ); widgetChar->setFont( font ); - mCharLineEdit->setFont( font ); + mCharPreview->setFont( font ); emit changed(); } @@ -3400,6 +3400,8 @@ void QgsFontMarkerSymbolLayerWidget::setAngle( double angle ) void QgsFontMarkerSymbolLayerWidget::setCharacterFromText( const QString &text ) { + mCharPreview->setText( text ); + if ( text.isEmpty() ) return; @@ -3410,7 +3412,10 @@ void QgsFontMarkerSymbolLayerWidget::setCharacterFromText( const QString &text ) bool ok = false; unsigned int value = text.toUInt( &ok, 0 ); if ( ok ) + { character = QChar( value ); + mCharPreview->setText( character ); + } } if ( character != mLayer->character() ) @@ -3430,7 +3435,16 @@ void QgsFontMarkerSymbolLayerWidget::setCharacterFromText( const QString &text ) void QgsFontMarkerSymbolLayerWidget::setCharacter( QChar chr ) { - mCharLineEdit->insert( chr ); + if ( mLayer->character().length() > 1 || QGuiApplication::keyboardModifiers() & Qt::ControlModifier ) + { + mCharLineEdit->insert( chr ); + return; + } + + mLayer->setCharacter( chr ); + whileBlocking( mCharLineEdit )->setText( chr ); + mCharPreview->setText( chr ); + emit changed(); } void QgsFontMarkerSymbolLayerWidget::setOffset() diff --git a/src/ui/symbollayer/widget_fontmarker.ui b/src/ui/symbollayer/widget_fontmarker.ui index b744007919a..05aee798517 100644 --- a/src/ui/symbollayer/widget_fontmarker.ui +++ b/src/ui/symbollayer/widget_fontmarker.ui @@ -71,7 +71,7 @@ - + @@ -178,7 +178,7 @@ - + @@ -260,21 +260,21 @@ - + - + - + @@ -303,7 +303,7 @@ - + @@ -324,21 +324,21 @@ - + - + - + @@ -375,7 +375,7 @@ - + @@ -473,13 +473,30 @@ - + + + + + Type in characters directly, or enter a character's hexadecimal value. + + + true + + + + + + + Preview + + +