mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
Don't refresh whole bookmarks browser node when deleting an item
This commit is contained in:
parent
a4ec735249
commit
cbd3f9b6d7
@ -629,7 +629,30 @@ QgsBookmarkManagerItem::QgsBookmarkManagerItem( QgsDataItem *parent, const QStri
|
||||
|
||||
connect( mManager, &QgsBookmarkManager::bookmarkAdded, this, [ = ]( const QString & ) { depopulate(); refresh(); } );
|
||||
connect( mManager, &QgsBookmarkManager::bookmarkChanged, this, [ = ]( const QString & ) { depopulate(); refresh(); } );
|
||||
connect( mManager, &QgsBookmarkManager::bookmarkRemoved, this, [ = ]( const QString & ) { depopulate(); refresh(); } );
|
||||
connect( mManager, &QgsBookmarkManager::bookmarkAboutToBeRemoved, this, [ = ]( const QString & id )
|
||||
{
|
||||
QgsBookmark b = mManager->bookmarkById( id );
|
||||
const QVector<QgsDataItem *> c = children();
|
||||
for ( QgsDataItem *i : c )
|
||||
{
|
||||
if ( QgsBookmarkItem *bookmarkItem = qobject_cast< QgsBookmarkItem * >( i ) )
|
||||
{
|
||||
if ( bookmarkItem->bookmark().id() == id )
|
||||
{
|
||||
deleteChildItem( bookmarkItem );
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if ( QgsBookmarkGroupItem *groupItem = qobject_cast< QgsBookmarkGroupItem * >( i ) )
|
||||
{
|
||||
if ( groupItem->group() == b.group() )
|
||||
{
|
||||
groupItem->removeBookmarkChildById( id );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
populate();
|
||||
}
|
||||
@ -682,6 +705,22 @@ QVector<QgsDataItem *> QgsBookmarkGroupItem::createChildren()
|
||||
return children;
|
||||
}
|
||||
|
||||
void QgsBookmarkGroupItem::removeBookmarkChildById( const QString &id )
|
||||
{
|
||||
const QVector<QgsDataItem *> c = children();
|
||||
for ( QgsDataItem *i : c )
|
||||
{
|
||||
if ( QgsBookmarkItem *bookmarkItem = qobject_cast< QgsBookmarkItem * >( i ) )
|
||||
{
|
||||
if ( bookmarkItem->bookmark().id() == id )
|
||||
{
|
||||
deleteChildItem( bookmarkItem );
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
QgsBookmarkItem::QgsBookmarkItem( QgsDataItem *parent, const QString &name, const QgsBookmark &bookmark, QgsBookmarkManager *manager )
|
||||
: QgsDataItem( Custom, parent, name, QStringLiteral( "bookmarks:%1/%2" ).arg( bookmark.group().toLower(), bookmark.id() ) )
|
||||
, mManager( manager )
|
||||
|
@ -340,6 +340,8 @@ class APP_EXPORT QgsBookmarkGroupItem : public QgsDataCollectionItem
|
||||
QString group() const { return mGroup; }
|
||||
QgsBookmarkManager *manager() { return mManager; }
|
||||
|
||||
void removeBookmarkChildById( const QString &id );
|
||||
|
||||
//! Icon for bookmark group
|
||||
static QIcon iconBookmarkGroup();
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user