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