fix widebar action removal
Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
parent
c9809fff6d
commit
a9c7e95c66
@ -113,6 +113,11 @@ void WorldListPage::openedImpl()
|
||||
{
|
||||
m_worlds->startWatching();
|
||||
|
||||
auto mInst = std::dynamic_pointer_cast<MinecraftInstance>(m_inst);
|
||||
if (!mInst || !mInst->traits().contains("feature:is_quick_play_singleplayer")) {
|
||||
ui->toolBar->removeAction(ui->actionJoin);
|
||||
}
|
||||
|
||||
auto const setting_name = QString("WideBarVisibility_%1").arg(id());
|
||||
if (!APPLICATION->settings()->contains(setting_name))
|
||||
m_wide_bar_setting = APPLICATION->settings()->registerSetting(setting_name);
|
||||
@ -120,8 +125,6 @@ void WorldListPage::openedImpl()
|
||||
m_wide_bar_setting = APPLICATION->settings()->getSetting(setting_name);
|
||||
|
||||
ui->toolBar->setVisibilityState(m_wide_bar_setting->get().toByteArray());
|
||||
auto mInst = std::dynamic_pointer_cast<MinecraftInstance>(m_inst);
|
||||
ui->toolBar->setActionVisible(ui->actionJoin, mInst && mInst->traits().contains("feature:is_quick_play_singleplayer"));
|
||||
}
|
||||
|
||||
void WorldListPage::closedImpl()
|
||||
@ -341,9 +344,14 @@ void WorldListPage::worldChanged([[maybe_unused]] const QModelIndex& current, [[
|
||||
ui->actionDatapacks->setEnabled(enable);
|
||||
bool hasIcon = !index.data(WorldList::IconFileRole).isNull();
|
||||
ui->actionReset_Icon->setEnabled(enable && hasIcon);
|
||||
|
||||
auto mInst = std::dynamic_pointer_cast<MinecraftInstance>(m_inst);
|
||||
ui->actionJoin->setEnabled(enable);
|
||||
ui->toolBar->setActionVisible(ui->actionJoin, mInst && mInst->traits().contains("feature:is_quick_play_singleplayer"));
|
||||
auto supportsJoin = mInst && mInst->traits().contains("feature:is_quick_play_singleplayer");
|
||||
ui->actionJoin->setEnabled(enable && supportsJoin);
|
||||
|
||||
if (!supportsJoin) {
|
||||
ui->toolBar->removeAction(ui->actionJoin);
|
||||
}
|
||||
}
|
||||
|
||||
void WorldListPage::on_actionAdd_triggered()
|
||||
|
@ -309,17 +309,15 @@ bool WideBar::checkHash(QByteArray const& old_hash) const
|
||||
return old_hash == getHash();
|
||||
}
|
||||
|
||||
void WideBar::setActionVisible(QAction* action, bool visible)
|
||||
void WideBar::removeAction(QAction* action)
|
||||
{
|
||||
auto iter = getMatching(action);
|
||||
if (iter == m_entries.end()) {
|
||||
if (iter == m_entries.end())
|
||||
return;
|
||||
}
|
||||
|
||||
iter->bar_action->setVisible(visible);
|
||||
|
||||
// NOTE: This is needed so that disabled actions get reflected on the button when it is made visible.
|
||||
static_cast<ActionButton*>(widgetForAction(iter->bar_action))->actionChanged();
|
||||
iter->bar_action->setVisible(false);
|
||||
removeAction(iter->bar_action);
|
||||
m_entries.erase(iter);
|
||||
}
|
||||
|
||||
#include "WideBar.moc"
|
||||
|
@ -38,7 +38,7 @@ class WideBar : public QToolBar {
|
||||
[[nodiscard]] QByteArray getVisibilityState() const;
|
||||
void setVisibilityState(QByteArray&&);
|
||||
|
||||
void setActionVisible(QAction* action, bool visible);
|
||||
void removeAction(QAction* action);
|
||||
|
||||
private:
|
||||
struct BarEntry {
|
||||
|
Loading…
Reference in New Issue
Block a user