From 2c98fc60880da6746b54cffaf556c1315760b810 Mon Sep 17 00:00:00 2001 From: Larry Shaffer Date: Wed, 19 Jun 2019 09:52:23 -0600 Subject: [PATCH] Draw layer tree layer item indicators floating on right of viewport Also, remove adjustment of layer text rectangle, since veiwport scrolls horizontally now. --- src/gui/layertree/qgslayertreeviewitemdelegate.cpp | 14 ++++---------- src/gui/layertree/qgslayertreeviewitemdelegate.h | 2 +- 2 files changed, 5 insertions(+), 11 deletions(-) diff --git a/src/gui/layertree/qgslayertreeviewitemdelegate.cpp b/src/gui/layertree/qgslayertreeviewitemdelegate.cpp index 3645f1f696d..f9d91750b40 100644 --- a/src/gui/layertree/qgslayertreeviewitemdelegate.cpp +++ b/src/gui/layertree/qgslayertreeviewitemdelegate.cpp @@ -33,7 +33,7 @@ QgsLayerTreeViewProxyStyle::QgsLayerTreeViewProxyStyle( QgsLayerTreeView *treeVi QRect QgsLayerTreeViewProxyStyle::subElementRect( QStyle::SubElement element, const QStyleOption *option, const QWidget *widget ) const { - if ( element == SE_ItemViewItemText || element == SE_LayerTreeItemIndicator ) + if ( element == SE_LayerTreeItemIndicator ) { if ( const QStyleOptionViewItem *vopt = qstyleoption_cast( option ) ) { @@ -42,17 +42,11 @@ QRect QgsLayerTreeViewProxyStyle::subElementRect( QStyle::SubElement element, co int count = mLayerTreeView->indicators( node ).count(); if ( count ) { + QRect vpr = mLayerTreeView->viewport()->rect(); QRect r = QProxyStyle::subElementRect( SE_ItemViewItemText, option, widget ); int indiWidth = r.height() * count; - int textWidth = r.width() - indiWidth; - if ( element == SE_LayerTreeItemIndicator ) - { - return QRect( r.left() + textWidth, r.top(), indiWidth, r.height() ); - } - else if ( element == SE_ItemViewItemText ) - { - return QRect( r.left(), r.top(), textWidth, r.height() ); - } + int vpIndiWidth = vpr.width() - indiWidth; + return QRect( vpIndiWidth, r.top(), indiWidth, r.height() ); } } } diff --git a/src/gui/layertree/qgslayertreeviewitemdelegate.h b/src/gui/layertree/qgslayertreeviewitemdelegate.h index 2bc8cc7bd5c..3af310dfc1d 100644 --- a/src/gui/layertree/qgslayertreeviewitemdelegate.h +++ b/src/gui/layertree/qgslayertreeviewitemdelegate.h @@ -37,7 +37,7 @@ class QgsLayerTreeView; #include /** - * Proxy style to make the item text rect shorter so that indicators fit in without colliding with text + * Proxy style for layer items with indicators */ class QgsLayerTreeViewProxyStyle : public QgsProxyStyle {