Merge branch 'master' into connections

This commit is contained in:
GriffinR 2024-08-21 02:18:49 -04:00 committed by GitHub
commit 4f4e8105cd
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 39 additions and 63 deletions

View file

@ -26,6 +26,7 @@ The **"Breaking Changes"** listed below are changes that have been made in the d
- Fix config files being written before the project is opened successfully. - Fix config files being written before the project is opened successfully.
- Fix the map and other project info still displaying if a new project fails to open. - Fix the map and other project info still displaying if a new project fails to open.
- Fix unsaved changes being ignored when quitting (such as with Cmd+Q on macOS). - Fix unsaved changes being ignored when quitting (such as with Cmd+Q on macOS).
- Fix selections with multiple Events not always clearing when making a new selection.
- Fix `About porymap` opening a new window each time it's activated. - Fix `About porymap` opening a new window each time it's activated.
- Fix the `Edit History` window not raising to the front when reactivated. - Fix the `Edit History` window not raising to the front when reactivated.
- New maps are now always inserted in map dropdowns at the correct position, rather than at the bottom of the list until the project is reloaded. - New maps are now always inserted in map dropdowns at the correct position, rather than at the bottom of the list until the project is reloaded.

View file

@ -223,7 +223,7 @@ private slots:
void on_toolButton_deleteObject_clicked(); void on_toolButton_deleteObject_clicked();
void addNewEvent(Event::Type type); void addNewEvent(Event::Type type);
void tryAddEventTab(QWidget * tab, Event::Group group); void tryAddEventTab(QWidget * tab);
void displayEventTabs(); void displayEventTabs();
void updateSelectedObjects(); void updateSelectedObjects();
void updateObjects(); void updateObjects();
@ -331,19 +331,10 @@ private:
QAction *copyAction = nullptr; QAction *copyAction = nullptr;
QAction *pasteAction = nullptr; QAction *pasteAction = nullptr;
QWidget *eventTabObjectWidget;
QWidget *eventTabWarpWidget;
QWidget *eventTabTriggerWidget;
QWidget *eventTabBGWidget;
QWidget *eventTabHealspotWidget;
QWidget *eventTabMultipleWidget;
QMap<Event::Group, DraggablePixmapItem*> lastSelectedEvent; QMap<Event::Group, DraggablePixmapItem*> lastSelectedEvent;
bool isProgrammaticEventTabChange; bool isProgrammaticEventTabChange;
bool newMapDefaultsSet = false; bool newMapDefaultsSet = false;
MapSortOrder mapSortOrder;
bool tilesetNeedsRedraw = false; bool tilesetNeedsRedraw = false;
bool userSetMap(QString, bool scrollTreeView = false); bool userSetMap(QString, bool scrollTreeView = false);

View file

@ -1999,19 +1999,25 @@ void Editor::selectMapEvent(DraggablePixmapItem *object) {
} }
void Editor::selectMapEvent(DraggablePixmapItem *object, bool toggle) { void Editor::selectMapEvent(DraggablePixmapItem *object, bool toggle) {
if (selected_events && object) { if (!selected_events || !object)
if (selected_events->contains(object)) { return;
if (toggle) {
selected_events->removeOne(object); if (!toggle) {
} // Selecting just this event
} else { selected_events->clear();
if (!toggle) { selected_events->append(object);
selected_events->clear(); } else if (!selected_events->contains(object)) {
} // Adding event to selection
selected_events->append(object); selected_events->append(object);
} } else if (selected_events->length() > 1) {
updateSelectedEvents(); // Removing from group selection
selected_events->removeOne(object);
} else {
// Attempting to toggle the only currently-selected event.
// Unselecting an event this way would be unexpected, so we ignore it.
return;
} }
updateSelectedEvents();
} }
void Editor::selectedEventIndexChanged(int index, Event::Group eventGroup) { void Editor::selectedEventIndexChanged(int index, Event::Group eventGroup) {

View file

@ -371,12 +371,6 @@ void MainWindow::initMiscHeapObjects() {
mapListProxyModel->setSourceModel(mapListModel); mapListProxyModel->setSourceModel(mapListModel);
ui->mapList->setModel(mapListProxyModel); ui->mapList->setModel(mapListProxyModel);
eventTabObjectWidget = ui->tab_Objects;
eventTabWarpWidget = ui->tab_Warps;
eventTabTriggerWidget = ui->tab_Triggers;
eventTabBGWidget = ui->tab_BGs;
eventTabHealspotWidget = ui->tab_Healspots;
eventTabMultipleWidget = ui->tab_Multiple;
ui->tabWidget_EventType->clear(); ui->tabWidget_EventType->clear();
} }
@ -395,7 +389,7 @@ void MainWindow::initMapSortOrder() {
connect(mapSortOrderActionGroup, &QActionGroup::triggered, this, &MainWindow::mapSortOrder_changed); connect(mapSortOrderActionGroup, &QActionGroup::triggered, this, &MainWindow::mapSortOrder_changed);
QAction* sortOrder = ui->toolButton_MapSortOrder->menu()->actions()[mapSortOrder]; QAction* sortOrder = ui->toolButton_MapSortOrder->menu()->actions()[porymapConfig.mapSortOrder];
ui->toolButton_MapSortOrder->setIcon(sortOrder->icon()); ui->toolButton_MapSortOrder->setIcon(sortOrder->icon());
sortOrder->setChecked(true); sortOrder->setChecked(true);
} }
@ -436,7 +430,7 @@ void MainWindow::mapSortOrder_changed(QAction *action)
} }
} }
if (i != mapSortOrder) if (i != porymapConfig.mapSortOrder)
{ {
ui->toolButton_MapSortOrder->setIcon(action->icon()); ui->toolButton_MapSortOrder->setIcon(action->icon());
porymapConfig.mapSortOrder = static_cast<MapSortOrder>(i); porymapConfig.mapSortOrder = static_cast<MapSortOrder>(i);
@ -482,8 +476,6 @@ void MainWindow::loadUserSettings() {
ui->checkBox_ToggleBorder->setChecked(porymapConfig.showBorder); ui->checkBox_ToggleBorder->setChecked(porymapConfig.showBorder);
ui->checkBox_ToggleGrid->setChecked(porymapConfig.showGrid); ui->checkBox_ToggleGrid->setChecked(porymapConfig.showGrid);
ui->checkBox_MirrorConnections->setChecked(porymapConfig.mirrorConnectingMaps); ui->checkBox_MirrorConnections->setChecked(porymapConfig.mirrorConnectingMaps);
mapSortOrder = porymapConfig.mapSortOrder;
this->editor->collisionOpacity = static_cast<qreal>(porymapConfig.collisionOpacity) / 100; this->editor->collisionOpacity = static_cast<qreal>(porymapConfig.collisionOpacity) / 100;
ui->horizontalSlider_CollisionTransparency->setValue(porymapConfig.collisionOpacity); ui->horizontalSlider_CollisionTransparency->setValue(porymapConfig.collisionOpacity);
ui->slider_DiveEmergeMapOpacity->setValue(porymapConfig.diveEmergeMapOpacity); ui->slider_DiveEmergeMapOpacity->setValue(porymapConfig.diveEmergeMapOpacity);
@ -1138,7 +1130,7 @@ void MainWindow::sortMapList() {
mapGroupItemsList->clear(); mapGroupItemsList->clear();
QStandardItem *root = mapListModel->invisibleRootItem(); QStandardItem *root = mapListModel->invisibleRootItem();
switch (mapSortOrder) switch (porymapConfig.mapSortOrder)
{ {
case MapSortOrder::Group: case MapSortOrder::Group:
for (int i = 0; i < project->groupNames.length(); i++) { for (int i = 0; i < project->groupNames.length(); i++) {
@ -2038,7 +2030,8 @@ void MainWindow::addNewEvent(Event::Type type) {
} }
} }
void MainWindow::tryAddEventTab(QWidget * tab, Event::Group group) { void MainWindow::tryAddEventTab(QWidget * tab) {
auto group = getEventGroupFromTabWidget(tab);
if (editor->map->events.value(group).length()) if (editor->map->events.value(group).length())
ui->tabWidget_EventType->addTab(tab, QString("%1s").arg(Event::eventGroupToString(group))); ui->tabWidget_EventType->addTab(tab, QString("%1s").arg(Event::eventGroupToString(group)));
} }
@ -2047,11 +2040,11 @@ void MainWindow::displayEventTabs() {
const QSignalBlocker blocker(ui->tabWidget_EventType); const QSignalBlocker blocker(ui->tabWidget_EventType);
ui->tabWidget_EventType->clear(); ui->tabWidget_EventType->clear();
tryAddEventTab(eventTabObjectWidget, Event::Group::Object); tryAddEventTab(ui->tab_Objects);
tryAddEventTab(eventTabWarpWidget, Event::Group::Warp); tryAddEventTab(ui->tab_Warps);
tryAddEventTab(eventTabTriggerWidget, Event::Group::Coord); tryAddEventTab(ui->tab_Triggers);
tryAddEventTab(eventTabBGWidget, Event::Group::Bg); tryAddEventTab(ui->tab_BGs);
tryAddEventTab(eventTabHealspotWidget, Event::Group::Heal); tryAddEventTab(ui->tab_Healspots);
} }
void MainWindow::updateObjects() { void MainWindow::updateObjects() {
@ -2211,30 +2204,15 @@ void MainWindow::updateSelectedObjects() {
} }
} }
Event::Group MainWindow::getEventGroupFromTabWidget(QWidget *tab) Event::Group MainWindow::getEventGroupFromTabWidget(QWidget *tab) {
{ static const QMap<QWidget*,Event::Group> tabToGroup = {
Event::Group ret = Event::Group::None; {ui->tab_Objects, Event::Group::Object},
if (tab == eventTabObjectWidget) {ui->tab_Warps, Event::Group::Warp},
{ {ui->tab_Triggers, Event::Group::Coord},
ret = Event::Group::Object; {ui->tab_BGs, Event::Group::Bg},
} {ui->tab_Healspots, Event::Group::Heal},
else if (tab == eventTabWarpWidget) };
{ return tabToGroup.value(tab, Event::Group::None);
ret = Event::Group::Warp;
}
else if (tab == eventTabTriggerWidget)
{
ret = Event::Group::Coord;
}
else if (tab == eventTabBGWidget)
{
ret = Event::Group::Bg;
}
else if (tab == eventTabHealspotWidget)
{
ret = Event::Group::Heal;
}
return ret;
} }
void MainWindow::eventTabChanged(int index) { void MainWindow::eventTabChanged(int index) {