diff --git a/python/core/auto_generated/qgsbrowsermodel.sip.in b/python/core/auto_generated/qgsbrowsermodel.sip.in index 8b1d7f5f437..42f74409f8e 100644 --- a/python/core/auto_generated/qgsbrowsermodel.sip.in +++ b/python/core/auto_generated/qgsbrowsermodel.sip.in @@ -22,6 +22,14 @@ items for the different data providers and folders accessible to users. QgsBrowserModel models are not initially populated and use a deferred initialization approach. After constructing a QgsBrowserModel, a call must be made to initialize() in order to populate the model. + +.. note:: + + Since QGIS 3.10 it is recommended to use QgsBrowserGuiModel from GUI library. + Implementation of data items used from QgsBrowserModel should not trigger any GUI + operations such as opening of widgets/dialogs or showing message boxes. Such actions + should be implemented in a new QgsDataItemGuiProvider subclass which is used + by QgsBrowserGuiModel (but not by QgsBrowserModel). %End %TypeHeaderCode @@ -69,6 +77,8 @@ Constructor for QgsBrowserModel, with the specified ``parent`` object. virtual QMimeData *mimeData( const QModelIndexList &indexes ) const; + virtual bool dropMimeData( const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent ); + virtual bool hasChildren( const QModelIndex &parent = QModelIndex() ) const; virtual bool canFetchMore( const QModelIndex &parent ) const; diff --git a/python/gui/auto_generated/qgsbrowserguimodel.sip.in b/python/gui/auto_generated/qgsbrowserguimodel.sip.in index 28cdf3f559e..faa1cf422a5 100644 --- a/python/gui/auto_generated/qgsbrowserguimodel.sip.in +++ b/python/gui/auto_generated/qgsbrowserguimodel.sip.in @@ -17,6 +17,8 @@ tree. QgsBrowserGuiModel is the foundation for the QGIS browser panel, and includes items for the different data providers and folders accessible to users. + +.. versionadded:: 3.10 %End %TypeHeaderCode @@ -41,6 +43,9 @@ Constructor for QgsBrowserGuiModel, with the specified ``parent`` object. int row, int column, const QModelIndex &parent ); void setMessageBar( QgsMessageBar *bar ); +%Docstring +Sets message bar that will be passed in QgsDataItemGuiContext to data items +%End }; diff --git a/python/gui/auto_generated/qgsdataitemguiproviderregistry.sip.in b/python/gui/auto_generated/qgsdataitemguiproviderregistry.sip.in index 73cf700871b..d66aef0d49d 100644 --- a/python/gui/auto_generated/qgsdataitemguiproviderregistry.sip.in +++ b/python/gui/auto_generated/qgsdataitemguiproviderregistry.sip.in @@ -26,6 +26,9 @@ QgsGui.instance()->dataItemGuiProviderRegistry(). %End public: QgsDataItemGuiProviderRegistry( QgsProviderGuiRegistry *providerGuiRegistry ); +%Docstring +Initializes the registry. Do not create new instances in client code - use QgsGui.dataItemGuiProviderRegistry() instead +%End ~QgsDataItemGuiProviderRegistry(); diff --git a/python/gui/auto_generated/qgsprojectstorageguiregistry.sip.in b/python/gui/auto_generated/qgsprojectstorageguiregistry.sip.in index 9da034a81fb..cfb0e097ec7 100644 --- a/python/gui/auto_generated/qgsprojectstorageguiregistry.sip.in +++ b/python/gui/auto_generated/qgsprojectstorageguiregistry.sip.in @@ -30,6 +30,9 @@ QgsProjectStorageGuiRegistry is not usually directly created, but rather accesse %End public: QgsProjectStorageGuiRegistry( QgsProviderGuiRegistry *providerGuiRegistry ); +%Docstring +Initializes the registry. Do not create new instances in client code - use QgsGui.projectStorageGuiRegistry() instead +%End ~QgsProjectStorageGuiRegistry(); diff --git a/python/gui/auto_generated/qgsproviderguimetadata.sip.in b/python/gui/auto_generated/qgsproviderguimetadata.sip.in index 529a6c84b5c..02ba49ad2f7 100644 --- a/python/gui/auto_generated/qgsproviderguimetadata.sip.in +++ b/python/gui/auto_generated/qgsproviderguimetadata.sip.in @@ -33,9 +33,7 @@ Constructor for provider gui metadata virtual QList dataItemGuiProviders(); %Docstring -Data GUI item - -.. seealso:: :py:func:`QgsProviderBrowserMetadata.dataItemProviders` +Returns data item gui providers %End virtual void registerGui( QMainWindow *widget ); diff --git a/src/core/qgsbrowsermodel.cpp b/src/core/qgsbrowsermodel.cpp index 02b99b64797..1e11d4796cf 100644 --- a/src/core/qgsbrowsermodel.cpp +++ b/src/core/qgsbrowsermodel.cpp @@ -596,6 +596,20 @@ QMimeData *QgsBrowserModel::mimeData( const QModelIndexList &indexes ) const return QgsMimeDataUtils::encodeUriList( lst ); } +bool QgsBrowserModel::dropMimeData( const QMimeData *data, Qt::DropAction action, int, int, const QModelIndex &parent ) +{ + QgsDataItem *destItem = dataItem( parent ); + if ( !destItem ) + { + QgsDebugMsgLevel( QStringLiteral( "DROP PROBLEM!" ), 4 ); + return false; + } + + Q_NOWARN_DEPRECATED_PUSH + return destItem->handleDrop( data, action ); + Q_NOWARN_DEPRECATED_POP +} + QgsDataItem *QgsBrowserModel::dataItem( const QModelIndex &idx ) const { void *v = idx.internalPointer(); diff --git a/src/core/qgsbrowsermodel.h b/src/core/qgsbrowsermodel.h index f90f78769c0..e37e9cfc79a 100644 --- a/src/core/qgsbrowsermodel.h +++ b/src/core/qgsbrowsermodel.h @@ -61,6 +61,12 @@ class CORE_EXPORT QgsBrowserWatcher : public QFutureWatcher dataItemGuiProviders(); //! Assigns parent to widget