mirror of
https://invent.kde.org/system/dolphin
synced 2024-10-28 03:21:56 +00:00
[DolphinView] Fix "Folder is empty" label showing prematurely
Don't show the label while still loading. Since there is no property in `KDirLister` a dedicated `m_loading` is added for this purpose. Also, I removed the explicit update on `urlChanged` as the view probably won't change until the lister starts loading. BUG: 430085
This commit is contained in:
parent
6945a54004
commit
2e79e21c3f
|
@ -67,6 +67,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
|
||||||
m_assureVisibleCurrentIndex(false),
|
m_assureVisibleCurrentIndex(false),
|
||||||
m_isFolderWritable(true),
|
m_isFolderWritable(true),
|
||||||
m_dragging(false),
|
m_dragging(false),
|
||||||
|
m_loading(false),
|
||||||
m_url(url),
|
m_url(url),
|
||||||
m_viewPropertiesContext(),
|
m_viewPropertiesContext(),
|
||||||
m_mode(DolphinView::IconsView),
|
m_mode(DolphinView::IconsView),
|
||||||
|
@ -165,7 +166,7 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
|
||||||
|
|
||||||
connect(m_model, &KFileItemModel::directoryLoadingStarted, this, &DolphinView::slotDirectoryLoadingStarted);
|
connect(m_model, &KFileItemModel::directoryLoadingStarted, this, &DolphinView::slotDirectoryLoadingStarted);
|
||||||
connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted);
|
connect(m_model, &KFileItemModel::directoryLoadingCompleted, this, &DolphinView::slotDirectoryLoadingCompleted);
|
||||||
connect(m_model, &KFileItemModel::directoryLoadingCanceled, this, &DolphinView::directoryLoadingCanceled);
|
connect(m_model, &KFileItemModel::directoryLoadingCanceled, this, &DolphinView::slotDirectoryLoadingCanceled);
|
||||||
connect(m_model, &KFileItemModel::directoryLoadingProgress, this, &DolphinView::directoryLoadingProgress);
|
connect(m_model, &KFileItemModel::directoryLoadingProgress, this, &DolphinView::directoryLoadingProgress);
|
||||||
connect(m_model, &KFileItemModel::directorySortingProgress, this, &DolphinView::directorySortingProgress);
|
connect(m_model, &KFileItemModel::directorySortingProgress, this, &DolphinView::directorySortingProgress);
|
||||||
connect(m_model, &KFileItemModel::itemsChanged,
|
connect(m_model, &KFileItemModel::itemsChanged,
|
||||||
|
@ -179,8 +180,6 @@ DolphinView::DolphinView(const QUrl& url, QWidget* parent) :
|
||||||
|
|
||||||
connect(this, &DolphinView::itemCountChanged,
|
connect(this, &DolphinView::itemCountChanged,
|
||||||
this, &DolphinView::updatePlaceholderLabel);
|
this, &DolphinView::updatePlaceholderLabel);
|
||||||
connect(this, &DolphinView::urlChanged,
|
|
||||||
this, &DolphinView::updatePlaceholderLabel);
|
|
||||||
|
|
||||||
m_view->installEventFilter(this);
|
m_view->installEventFilter(this);
|
||||||
connect(m_view, &DolphinItemListView::sortOrderChanged,
|
connect(m_view, &DolphinItemListView::sortOrderChanged,
|
||||||
|
@ -1624,8 +1623,8 @@ void DolphinView::slotRenamingResult(KJob* job)
|
||||||
|
|
||||||
void DolphinView::slotDirectoryLoadingStarted()
|
void DolphinView::slotDirectoryLoadingStarted()
|
||||||
{
|
{
|
||||||
// We don't want the placeholder label to flicker while the folder is loading
|
m_loading = true;
|
||||||
m_placeholderLabel->setVisible(false);
|
updatePlaceholderLabel();
|
||||||
|
|
||||||
// Disable the writestate temporary until it can be determined in a fast way
|
// Disable the writestate temporary until it can be determined in a fast way
|
||||||
// in DolphinView::slotDirectoryLoadingCompleted()
|
// in DolphinView::slotDirectoryLoadingCompleted()
|
||||||
|
@ -1639,6 +1638,8 @@ void DolphinView::slotDirectoryLoadingStarted()
|
||||||
|
|
||||||
void DolphinView::slotDirectoryLoadingCompleted()
|
void DolphinView::slotDirectoryLoadingCompleted()
|
||||||
{
|
{
|
||||||
|
m_loading = false;
|
||||||
|
|
||||||
// Update the view-state. This has to be done asynchronously
|
// Update the view-state. This has to be done asynchronously
|
||||||
// because the view might not be in its final state yet.
|
// because the view might not be in its final state yet.
|
||||||
QTimer::singleShot(0, this, &DolphinView::updateViewState);
|
QTimer::singleShot(0, this, &DolphinView::updateViewState);
|
||||||
|
@ -1652,6 +1653,15 @@ void DolphinView::slotDirectoryLoadingCompleted()
|
||||||
updateWritableState();
|
updateWritableState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DolphinView::slotDirectoryLoadingCanceled()
|
||||||
|
{
|
||||||
|
m_loading = false;
|
||||||
|
|
||||||
|
updatePlaceholderLabel();
|
||||||
|
|
||||||
|
Q_EMIT directoryLoadingCanceled();
|
||||||
|
}
|
||||||
|
|
||||||
void DolphinView::slotItemsChanged()
|
void DolphinView::slotItemsChanged()
|
||||||
{
|
{
|
||||||
m_assureVisibleCurrentIndex = false;
|
m_assureVisibleCurrentIndex = false;
|
||||||
|
@ -2016,7 +2026,7 @@ void DolphinView::slotSwipeUp()
|
||||||
|
|
||||||
void DolphinView::updatePlaceholderLabel()
|
void DolphinView::updatePlaceholderLabel()
|
||||||
{
|
{
|
||||||
if (itemsCount() > 0) {
|
if (m_loading || itemsCount() > 0) {
|
||||||
m_placeholderLabel->setVisible(false);
|
m_placeholderLabel->setVisible(false);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -689,6 +689,12 @@ private slots:
|
||||||
*/
|
*/
|
||||||
void slotDirectoryLoadingCompleted();
|
void slotDirectoryLoadingCompleted();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Invoked when the file item model indicates that the loading of a directory has
|
||||||
|
* been canceled.
|
||||||
|
*/
|
||||||
|
void slotDirectoryLoadingCanceled();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Is invoked when items of KFileItemModel have been changed.
|
* Is invoked when items of KFileItemModel have been changed.
|
||||||
*/
|
*/
|
||||||
|
@ -816,6 +822,7 @@ private:
|
||||||
bool m_isFolderWritable;
|
bool m_isFolderWritable;
|
||||||
bool m_dragging; // True if a dragging is done. Required to be able to decide whether a
|
bool m_dragging; // True if a dragging is done. Required to be able to decide whether a
|
||||||
// tooltip may be shown when hovering an item.
|
// tooltip may be shown when hovering an item.
|
||||||
|
bool m_loading;
|
||||||
|
|
||||||
QUrl m_url;
|
QUrl m_url;
|
||||||
QString m_viewPropertiesContext;
|
QString m_viewPropertiesContext;
|
||||||
|
|
Loading…
Reference in a new issue