Resize list to minimum necessary height

This commit is contained in:
WarmUpTill 2021-11-21 15:08:10 +01:00 committed by WarmUpTill
parent 5dfed8ac2a
commit 4d32e921f9
6 changed files with 34 additions and 0 deletions

View File

@ -55,6 +55,8 @@ protected:
std::shared_ptr<MacroActionRandom> _entryData;
private:
void SetMacroListSize();
MacroSelection *_macroSelection;
QListWidget *_macroList;
QPushButton *_add;

View File

@ -56,6 +56,8 @@ protected:
std::shared_ptr<MacroActionRun> _entryData;
private:
void SetArgListSize();
FileSelection *_filePath;
QListWidget *_argList;
QPushButton *_addArg;

View File

@ -55,6 +55,7 @@ void listAddClicked(QListWidget *list, QWidget *newWidget,
QMetaObject::Connection *addHighlight = nullptr);
bool listMoveUp(QListWidget *list);
bool listMoveDown(QListWidget *list);
void setHeightToContentHeight(QListWidget *list);
bool DisplayMessage(const QString &msg, bool question = false);
void DisplayTrayMessage(const QString &title, const QString &msg);
void addSelectionEntry(QComboBox *sel, const char *description,

View File

@ -155,6 +155,7 @@ void MacroActionRandomEdit::UpdateEntryData()
QListWidgetItem *item = new QListWidgetItem(name, _macroList);
item->setData(Qt::UserRole, name);
}
SetMacroListSize();
}
void MacroActionRandomEdit::MacroRemove(const QString &name)
@ -209,6 +210,7 @@ void MacroActionRandomEdit::AddMacro()
std::lock_guard<std::mutex> lock(switcher->m);
_entryData->_macros.push_back(macro);
SetMacroListSize();
}
void MacroActionRandomEdit::RemoveMacro()
@ -232,6 +234,7 @@ void MacroActionRandomEdit::RemoveMacro()
}
}
delete item;
SetMacroListSize();
}
int MacroActionRandomEdit::FindEntry(const std::string &macro)
@ -261,3 +264,9 @@ void MacroActionRandomEdit::MacroSelectionChanged(int idx)
QString name = item->text();
_macroSelection->SetCurrentMacro(GetMacroByName(name.toUtf8().data()));
}
void MacroActionRandomEdit::SetMacroListSize()
{
setHeightToContentHeight(_macroList);
adjustSize();
}

View File

@ -137,6 +137,7 @@ void MacroActionRunEdit::UpdateEntryData()
QListWidgetItem *item = new QListWidgetItem(arg, _argList);
item->setData(Qt::UserRole, arg);
}
SetArgListSize();
}
void MacroActionRunEdit::PathChanged(const QString &text)
@ -175,6 +176,7 @@ void MacroActionRunEdit::AddArg()
std::lock_guard<std::mutex> lock(switcher->m);
_entryData->_args << arg;
SetArgListSize();
}
void MacroActionRunEdit::RemoveArg()
@ -195,6 +197,7 @@ void MacroActionRunEdit::RemoveArg()
return;
}
delete item;
SetArgListSize();
}
void MacroActionRunEdit::ArgUp()
@ -224,3 +227,9 @@ void MacroActionRunEdit::ArgDown()
_entryData->_args.move(idx, idx + 1);
}
}
void MacroActionRunEdit::SetArgListSize()
{
setHeightToContentHeight(_argList);
adjustSize();
}

View File

@ -962,3 +962,14 @@ bool listMoveDown(QListWidget *list)
list->setCurrentRow(index + 1);
return true;
}
void setHeightToContentHeight(QListWidget *list)
{
auto nrItems = list->count();
if (nrItems == 0) {
list->setMaximumHeight(0);
} else {
list->setMaximumHeight(list->sizeHintForRow(0) * nrItems +
2 * list->frameWidth());
}
}