mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-28 00:17:30 -05:00
[bugfix] Bookmarks: fix a crash and show 6 digits
Fixes #17003 Spatial bookmarks keyboard navigation: right-arrow causes a row to appear below the current one and looks like a tree expansion (actually crashes master) Fixes #16350 Spatial Bookmark Panel: precision gets trimmed
This commit is contained in:
parent
0e2207ab3c
commit
6c897b6b1e
@ -30,9 +30,13 @@
|
|||||||
#include <QSqlQuery>
|
#include <QSqlQuery>
|
||||||
#include <QSqlRecord>
|
#include <QSqlRecord>
|
||||||
#include <QModelIndex>
|
#include <QModelIndex>
|
||||||
|
#include <QDoubleSpinBox>
|
||||||
#include <QAbstractTableModel>
|
#include <QAbstractTableModel>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
|
|
||||||
|
|
||||||
|
const int QgsDoubleSpinBoxBookmarksDelegate::DECIMAL_PLACES = 6;
|
||||||
|
|
||||||
QgsBookmarks::QgsBookmarks( QWidget *parent )
|
QgsBookmarks::QgsBookmarks( QWidget *parent )
|
||||||
: QgsDockWidget( parent )
|
: QgsDockWidget( parent )
|
||||||
|
|
||||||
@ -105,6 +109,7 @@ QgsBookmarks::QgsBookmarks( QWidget *parent )
|
|||||||
mProxyModel->setSourceModel( mModel );
|
mProxyModel->setSourceModel( mModel );
|
||||||
|
|
||||||
lstBookmarks->setModel( mProxyModel );
|
lstBookmarks->setModel( mProxyModel );
|
||||||
|
lstBookmarks->setItemDelegate( new QgsDoubleSpinBoxBookmarksDelegate );
|
||||||
|
|
||||||
connect( mModel, &QgsMergedBookmarksTableModel::layoutChanged, mProxyModel, &QgsBookmarksProxyModel::_resetModel );
|
connect( mModel, &QgsMergedBookmarksTableModel::layoutChanged, mProxyModel, &QgsBookmarksProxyModel::_resetModel );
|
||||||
|
|
||||||
@ -755,3 +760,23 @@ QVariant QgsBookmarksProxyModel::headerData( int section, Qt::Orientation orient
|
|||||||
return sourceModel()->headerData( section, orientation, role );
|
return sourceModel()->headerData( section, orientation, role );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QString QgsDoubleSpinBoxBookmarksDelegate::displayText( const QVariant &value, const QLocale &locale ) const
|
||||||
|
{
|
||||||
|
if ( value.userType() == QVariant::Double )
|
||||||
|
{
|
||||||
|
return locale.toString( value.toDouble(), 'f', QgsDoubleSpinBoxBookmarksDelegate::DECIMAL_PLACES );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
return QStyledItemDelegate::displayText( value, locale );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *QgsDoubleSpinBoxBookmarksDelegate::createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const
|
||||||
|
{
|
||||||
|
QWidget *widget = QStyledItemDelegate::createEditor( parent, option, index );
|
||||||
|
QDoubleSpinBox *spinbox = qobject_cast<QDoubleSpinBox *>( widget );
|
||||||
|
if ( spinbox )
|
||||||
|
spinbox->setDecimals( QgsDoubleSpinBoxBookmarksDelegate::DECIMAL_PLACES );
|
||||||
|
return widget;
|
||||||
|
}
|
||||||
|
@ -19,7 +19,7 @@
|
|||||||
|
|
||||||
#include <QSqlTableModel>
|
#include <QSqlTableModel>
|
||||||
#include <QSortFilterProxyModel>
|
#include <QSortFilterProxyModel>
|
||||||
#include <memory>
|
#include <QStyledItemDelegate>
|
||||||
|
|
||||||
#include "ui_qgsbookmarksbase.h"
|
#include "ui_qgsbookmarksbase.h"
|
||||||
#include "qgsdockwidget.h"
|
#include "qgsdockwidget.h"
|
||||||
@ -72,6 +72,27 @@ class QgsBookmarksProxyModel: public QSortFilterProxyModel
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* \brief QgsDoubleSpinBoxBookmarksDelegate class shows 6 digits when value is a double
|
||||||
|
*/
|
||||||
|
class QgsDoubleSpinBoxBookmarksDelegate : public QStyledItemDelegate
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
QString displayText( const QVariant &value, const QLocale &locale ) const override;
|
||||||
|
|
||||||
|
QWidget *createEditor( QWidget *parent,
|
||||||
|
const QStyleOptionViewItem &option,
|
||||||
|
const QModelIndex &index ) const override;
|
||||||
|
private:
|
||||||
|
|
||||||
|
static const int DECIMAL_PLACES;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Model that merge the QGIS and project model
|
* Model that merge the QGIS and project model
|
||||||
*/
|
*/
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
</rect>
|
</rect>
|
||||||
</property>
|
</property>
|
||||||
<property name="windowTitle">
|
<property name="windowTitle">
|
||||||
<string>Spatial Bookmarks Panel</string>
|
<string>Sp&atial Bookmarks Panel</string>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QWidget" name="bookmarksDockContents">
|
<widget class="QWidget" name="bookmarksDockContents">
|
||||||
<layout class="QGridLayout" name="gridLayout">
|
<layout class="QGridLayout" name="gridLayout">
|
||||||
@ -54,8 +54,14 @@
|
|||||||
<property name="rootIsDecorated">
|
<property name="rootIsDecorated">
|
||||||
<bool>false</bool>
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
<property name="sortingEnabled">
|
<property name="itemsExpandable">
|
||||||
<bool>true</bool>
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="animated">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="expandsOnDoubleClick">
|
||||||
|
<bool>false</bool>
|
||||||
</property>
|
</property>
|
||||||
</widget>
|
</widget>
|
||||||
</item>
|
</item>
|
||||||
@ -103,8 +109,9 @@
|
|||||||
<class>QgsDockWidget</class>
|
<class>QgsDockWidget</class>
|
||||||
<extends>QDockWidget</extends>
|
<extends>QDockWidget</extends>
|
||||||
<header>qgsdockwidget.h</header>
|
<header>qgsdockwidget.h</header>
|
||||||
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../images/images.qrc"/>
|
<include location="../../images/images.qrc"/>
|
||||||
</resources>
|
</resources>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user