fix crash in Menu.removeSeparator() if the menu item doesn't exist or isn't a separator

This commit is contained in:
ZappoMan 2014-03-05 21:17:25 -08:00
parent 7a8d26247a
commit 13985f8149

View file

@ -1320,17 +1320,25 @@ void Menu::addSeparator(const QString& menuName, const QString& separatorName) {
void Menu::removeSeparator(const QString& menuName, const QString& separatorName) { void Menu::removeSeparator(const QString& menuName, const QString& separatorName) {
QMenu* menu = getMenu(menuName); QMenu* menu = getMenu(menuName);
bool separatorRemoved = false;
if (menu) { if (menu) {
int textAt = findPositionOfMenuItem(menu, separatorName); int textAt = findPositionOfMenuItem(menu, separatorName);
QList<QAction*> menuActions = menu->actions(); QList<QAction*> menuActions = menu->actions();
QAction* separatorText = menuActions[textAt]; QAction* separatorText = menuActions[textAt];
QAction* separatorLine = menuActions[textAt - 1]; if (textAt > 0 && textAt < menuActions.size()) {
if (separatorLine->isSeparator()) { QAction* separatorLine = menuActions[textAt - 1];
menu->removeAction(separatorText); if (separatorLine) {
menu->removeAction(separatorLine); if (separatorLine->isSeparator()) {
menu->removeAction(separatorText);
menu->removeAction(separatorLine);
separatorRemoved = true;
}
}
} }
} }
QMenuBar::repaint(); if (separatorRemoved) {
QMenuBar::repaint();
}
} }
void Menu::addMenuItem(const MenuItemProperties& properties) { void Menu::addMenuItem(const MenuItemProperties& properties) {