┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/panels/places/placespanel.cpp
diff options
context:
space:
mode:
authorTem PQD <[email protected]>2025-09-21 20:48:22 +0000
committerMéven Car <[email protected]>2025-09-26 09:12:14 +0000
commit7eb1696a32891ce4f1f0e44c590a7fdb7c55fecd (patch)
tree3645e3998d10bcd63ebc7174e719804038de9174 /src/panels/places/placespanel.cpp
parentb9a3b749ead4bac7e2294f7bc2124f4fae274319 (diff)
placespanel: Fix default width by moving things from showEvent to constructor
Move instantiation, setModel, and some connections to constructor and remove showEvent. This was being done in an erroneous lazy order which led to the places panel's sizeHint not being called properly. Also removes the double loading workaround in setUrl, which is no longer needed either. BUG: 449070
Diffstat (limited to 'src/panels/places/placespanel.cpp')
-rw-r--r--src/panels/places/placespanel.cpp43
1 files changed, 16 insertions, 27 deletions
diff --git a/src/panels/places/placespanel.cpp b/src/panels/places/placespanel.cpp
index cb3f3183b..12d7619b8 100644
--- a/src/panels/places/placespanel.cpp
+++ b/src/panels/places/placespanel.cpp
@@ -67,15 +67,28 @@ PlacesPanel::PlacesPanel(QWidget *parent)
settings->setIconSize(iconSize);
settings->save();
});
+
+ readSettings();
+
+ // Set the model here so that it's loaded in time for the sizeHint to properly apply (setting it upon showEvent is too late)
+ auto *placesModel = DolphinPlacesModelSingleton::instance().placesModel();
+ setModel(placesModel);
+
+ connect(placesModel, &KFilePlacesModel::errorMessage, this, &PlacesPanel::errorMessage);
+ connect(placesModel, &KFilePlacesModel::teardownDone, this, &PlacesPanel::slotTearDownDone);
+
+ connect(placesModel, &QAbstractItemModel::rowsInserted, this, &PlacesPanel::slotRowsInserted);
+ connect(placesModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &PlacesPanel::slotRowsAboutToBeRemoved);
+
+ for (int i = 0; i < model()->rowCount(); ++i) {
+ connectDeviceSignals(model()->index(i, 0, QModelIndex()));
+ }
}
PlacesPanel::~PlacesPanel() = default;
void PlacesPanel::setUrl(const QUrl &url)
{
- // KFilePlacesView::setUrl no-ops when no model is set but we only set it in showEvent()
- // Remember the URL and set it in showEvent
- m_url = url;
KFilePlacesView::setUrl(url);
}
@@ -111,30 +124,6 @@ void PlacesPanel::readSettings()
setIconSize(QSize(iconSize, iconSize));
}
-void PlacesPanel::showEvent(QShowEvent *event)
-{
- if (!event->spontaneous() && !model()) {
- readSettings();
-
- auto *placesModel = DolphinPlacesModelSingleton::instance().placesModel();
- setModel(placesModel);
-
- connect(placesModel, &KFilePlacesModel::errorMessage, this, &PlacesPanel::errorMessage);
- connect(placesModel, &KFilePlacesModel::teardownDone, this, &PlacesPanel::slotTearDownDone);
-
- connect(placesModel, &QAbstractItemModel::rowsInserted, this, &PlacesPanel::slotRowsInserted);
- connect(placesModel, &QAbstractItemModel::rowsAboutToBeRemoved, this, &PlacesPanel::slotRowsAboutToBeRemoved);
-
- for (int i = 0; i < model()->rowCount(); ++i) {
- connectDeviceSignals(model()->index(i, 0, QModelIndex()));
- }
-
- setUrl(m_url);
- }
-
- KFilePlacesView::showEvent(event);
-}
-
static bool isInternalDrag(const QMimeData *mimeData)
{
const auto formats = mimeData->formats();