Skip to content

Commit

Permalink
Fix rule-based renderer widgets swallow copy/paste/delete shortcut keys
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] authored and nirvn committed Jan 6, 2020
1 parent a9edbd0 commit 6005bf6
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 1 deletion.
3 changes: 3 additions & 0 deletions python/gui/auto_generated/symbology/qgsrendererwidget.sip.in
Expand Up @@ -69,6 +69,9 @@ Returns the vector layer associated with the widget.
This method should be called whenever the renderer is actually set on the layer.
%End

virtual void setDockMode( bool dockMode );


signals:

void layerVariablesChanged();
Expand Down
Expand Up @@ -104,6 +104,8 @@ class QgsRuleBasedRendererWidget : QgsRendererWidget

virtual QgsFeatureRenderer *renderer();

virtual void setDockMode( bool dockMode );


public slots:

Expand Down
15 changes: 15 additions & 0 deletions src/app/3d/qgsrulebased3drendererwidget.cpp
Expand Up @@ -88,6 +88,21 @@ void QgsRuleBased3DRendererWidget::setLayer( QgsVectorLayer *layer )
connect( mModel, &QAbstractItemModel::rowsRemoved, this, &QgsRuleBased3DRendererWidget::widgetChanged );
}

void QgsRuleBased3DRendererWidget::setDockMode( bool dockMode )
{
if ( dockMode )
{
// when in dock mode, these shortcuts conflict with the main window shortcuts and cannot be used
if ( mCopyAction )
mCopyAction->setShortcut( QKeySequence() );
if ( mPasteAction )
mPasteAction->setShortcut( QKeySequence() );
if ( mDeleteAction )
mDeleteAction->setShortcut( QKeySequence() );
}
QgsPanelWidget::setDockMode( dockMode );
}


void QgsRuleBased3DRendererWidget::addRule()
{
Expand Down
4 changes: 3 additions & 1 deletion src/app/3d/qgsrulebased3drendererwidget.h
Expand Up @@ -86,13 +86,15 @@ class QgsRuleBased3DRendererWidget : public QgsPanelWidget, private Ui::QgsRuleB

public:
QgsRuleBased3DRendererWidget( QWidget *parent = nullptr );
~QgsRuleBased3DRendererWidget();
~QgsRuleBased3DRendererWidget() override;

//! load renderer from the layer
void setLayer( QgsVectorLayer *layer );
//! no transfer of ownership
QgsRuleBased3DRenderer::Rule *rootRule() { return mRootRule; }

void setDockMode( bool dockMode ) override;

protected slots:
void addRule();
void editRule();
Expand Down
15 changes: 15 additions & 0 deletions src/app/qgsrulebasedlabelingwidget.cpp
Expand Up @@ -115,6 +115,21 @@ QgsRuleBasedLabelingWidget::~QgsRuleBasedLabelingWidget()
delete mRootRule;
}

void QgsRuleBasedLabelingWidget::setDockMode( bool dockMode )
{
if ( dockMode )
{
// when in dock mode, these shortcuts conflict with the main window shortcuts and cannot be used
if ( mCopyAction )
mCopyAction->setShortcut( QKeySequence() );
if ( mPasteAction )
mPasteAction->setShortcut( QKeySequence() );
if ( mDeleteAction )
mDeleteAction->setShortcut( QKeySequence() );
}
QgsPanelWidget::setDockMode( dockMode );
}

void QgsRuleBasedLabelingWidget::addRule()
{

Expand Down
2 changes: 2 additions & 0 deletions src/app/qgsrulebasedlabelingwidget.h
Expand Up @@ -88,6 +88,8 @@ class QgsRuleBasedLabelingWidget : public QgsPanelWidget, private Ui::QgsRuleBas
//! Gives access to the internal root of the rule tree
const QgsRuleBasedLabeling::Rule *rootRule() const { return mRootRule; }

void setDockMode( bool dockMode ) override;

protected slots:
void addRule();
void editRule();
Expand Down
13 changes: 13 additions & 0 deletions src/gui/symbology/qgsrendererwidget.cpp
Expand Up @@ -348,6 +348,19 @@ void QgsRendererWidget::applyChanges()
apply();
}

void QgsRendererWidget::setDockMode( bool dockMode )
{
if ( dockMode )
{
// when in dock mode, these shortcuts conflict with the main window shortcuts and cannot be used
if ( mCopyAction )
mCopyAction->setShortcut( QKeySequence() );
if ( mPasteAction )
mPasteAction->setShortcut( QKeySequence() );
}
QgsPanelWidget::setDockMode( dockMode );
}

QgsDataDefinedSizeLegendWidget *QgsRendererWidget::createDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend )
{
QgsProperty ddSize = symbol->dataDefinedSize();
Expand Down
2 changes: 2 additions & 0 deletions src/gui/symbology/qgsrendererwidget.h
Expand Up @@ -79,6 +79,8 @@ class GUI_EXPORT QgsRendererWidget : public QgsPanelWidget
*/
void applyChanges();

void setDockMode( bool dockMode ) override;

signals:

/**
Expand Down
11 changes: 11 additions & 0 deletions src/gui/symbology/qgsrulebasedrendererwidget.cpp
Expand Up @@ -143,6 +143,17 @@ QgsFeatureRenderer *QgsRuleBasedRendererWidget::renderer()
return mRenderer;
}

void QgsRuleBasedRendererWidget::setDockMode( bool dockMode )
{
if ( dockMode )
{
// when in dock mode, these shortcuts conflict with the main window shortcuts and cannot be used
if ( mDeleteAction )
mDeleteAction->setShortcut( QKeySequence() );
}
QgsRendererWidget::setDockMode( dockMode );
}

void QgsRuleBasedRendererWidget::addRule()
{
QgsSymbol *s = QgsSymbol::defaultSymbol( mLayer->geometryType() );
Expand Down
1 change: 1 addition & 0 deletions src/gui/symbology/qgsrulebasedrendererwidget.h
Expand Up @@ -126,6 +126,7 @@ class GUI_EXPORT QgsRuleBasedRendererWidget : public QgsRendererWidget, private
~QgsRuleBasedRendererWidget() override;

QgsFeatureRenderer *renderer() override;
void setDockMode( bool dockMode ) override;

public slots:

Expand Down

0 comments on commit 6005bf6

Please sign in to comment.