From 26b86bae3be5110fc5776375b29b8b11740803d6 Mon Sep 17 00:00:00 2001 From: Larry Shaffer Date: Fri, 14 Jun 2019 15:27:59 -0600 Subject: [PATCH] Limit the maximum width of legend embedded widgets Since column is resized to contents, limit the expanded width of embedded widgets, if they are not already limited. Else, embedded widget may grow very wide due to large legend graphics. --- src/gui/layertree/qgslayertreeview.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/gui/layertree/qgslayertreeview.cpp b/src/gui/layertree/qgslayertreeview.cpp index 6c967c74573..f928a777d7b 100644 --- a/src/gui/layertree/qgslayertreeview.cpp +++ b/src/gui/layertree/qgslayertreeview.cpp @@ -159,7 +159,16 @@ void QgsLayerTreeView::modelRowsInserted( const QModelIndex &index, int start, i if ( QgsLayerTreeEmbeddedWidgetProvider *provider = QgsGui::layerTreeEmbeddedWidgetRegistry()->provider( providerId ) ) { QModelIndex index = layerTreeModel()->legendNode2index( legendNodes[i] ); - setIndexWidget( index, provider->createWidget( layer, i ) ); + QWidget *wdgt = provider->createWidget( layer, i ); + // Since column is resized to contents, limit the expanded width of embedded widgets, + // if they are not already limited, e.g. have the defaut MAX value. + // Else, embedded widget may grow very wide due to large legend graphics. + // TODO: Max width could be a configured setting. + if ( wdgt->maximumWidth() == QWIDGETSIZE_MAX ) + { + wdgt->setMaximumWidth( 250 ); + } + setIndexWidget( index, wdgt ); } } }