Add FinishLoading signal to ResourcesListBox to detect when the resources were loaded

In this way we avoid using ui::ListBox::Change signal as a
workaround (which is a signal that should be fired only from
ui::ListBox::onChange()).
This commit is contained in:
David Capello 2021-01-05 11:03:29 -03:00
parent 78fc63c3f8
commit de22d69678
3 changed files with 7 additions and 3 deletions

View File

@ -42,7 +42,7 @@ PalettePopup::PalettePopup()
addChild(m_popup);
m_paletteListBox.DoubleClickItem.connect(base::Bind<void>(&PalettePopup::onLoadPal, this));
m_paletteListBox.Change.connect(base::Bind<void>(&PalettePopup::onSearchChange, this));
m_paletteListBox.FinishLoading.connect(base::Bind<void>(&PalettePopup::onSearchChange, this));
m_popup->search()->Change.connect(base::Bind<void>(&PalettePopup::onSearchChange, this));
m_popup->loadPal()->Click.connect(base::Bind<void>(&PalettePopup::onLoadPal, this));
m_popup->openFolder()->Click.connect(base::Bind<void>(&PalettePopup::onOpenFolder, this));

View File

@ -210,10 +210,11 @@ void ResourcesListBox::onTick()
resource.release();
listItem.release();
}
Change();
if (m_resourcesLoader->isDone())
if (m_resourcesLoader->isDone()) {
FinishLoading();
stop();
}
}
void ResourcesListBox::stop()

View File

@ -9,6 +9,7 @@
#pragma once
#include "app/res/resources_loader.h"
#include "obs/signal.h"
#include "ui/listbox.h"
#include "ui/listitem.h"
#include "ui/timer.h"
@ -43,6 +44,8 @@ class ResourceListItem : public ui::ListItem {
void reload();
obs::signal<void()> FinishLoading;
protected:
virtual bool onProcessMessage(ui::Message* msg) override;
virtual void onChange() override;