Compare commits
1 Commits
release-d2
...
1622e6a89b
| Author | SHA1 | Date | |
|---|---|---|---|
| 1622e6a89b |
@@ -5,15 +5,17 @@
|
|||||||
* Fix file deletion to close file even if not active
|
* Fix file deletion to close file even if not active
|
||||||
* Fix file copy to work when creating a copy with the name of a previously
|
* Fix file copy to work when creating a copy with the name of a previously
|
||||||
deleted file
|
deleted file
|
||||||
* Fix crash that could occur after switching projects
|
* Fix copy/cut/paste enablement when there is no selection
|
||||||
* Make file picker popup accept on double click of a file
|
* Make file picker popup accept on double click of a file
|
||||||
* TileSheetEditor: Fix copy/cut/paste enablement when there is no selection
|
|
||||||
* TileSheetEditor: Fix manual redo of draw actions, fix drawing to pixel 0, 0
|
|
||||||
as first action
|
|
||||||
* TileSheetEditor: Fix draw command to work on same pixel after switching
|
|
||||||
subsheets
|
|
||||||
* PaletteEditor: Add RGB key shortcuts for focusing color channels
|
* PaletteEditor: Add RGB key shortcuts for focusing color channels
|
||||||
* PaletteEditor: Add color preview to color editor
|
* PaletteEditor: Add color preview to color editor
|
||||||
|
* PaletteEditor: Make RGB key shortcuts work when color channel inputs are
|
||||||
|
focused
|
||||||
|
|
||||||
|
# d2025.05.2
|
||||||
|
|
||||||
|
* TileSheetEditor: Fix manual redo of draw actions, fix drawing to pixel 0, 0 as first action (cce5f52f96511694afd98f0b9b6b1f19c06ecd20)
|
||||||
|
* TileSheetEditor: Fix draw command to work on same pixel after switching subsheets (514cb978351ee4b0a5335c22a506a6d9f608f0a7)
|
||||||
|
|
||||||
# d2025.05.1
|
# d2025.05.1
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ AddSubSheetCommand::AddSubSheetCommand(
|
|||||||
auto &parent = getSubSheet(m_img, m_parentIdx);
|
auto &parent = getSubSheet(m_img, m_parentIdx);
|
||||||
if (!parent.subsheets.empty()) {
|
if (!parent.subsheets.empty()) {
|
||||||
auto idx = m_parentIdx;
|
auto idx = m_parentIdx;
|
||||||
idx.emplace_back(static_cast<uint32_t>(parent.subsheets.size()));
|
idx.emplace_back(parent.subsheets.size());
|
||||||
m_addedSheets.push_back(idx);
|
m_addedSheets.push_back(idx);
|
||||||
} else {
|
} else {
|
||||||
auto idx = m_parentIdx;
|
auto idx = m_parentIdx;
|
||||||
|
|||||||
@@ -194,7 +194,6 @@ void TileSheetEditorImGui::keyStateChanged(turbine::Key const key, bool const do
|
|||||||
void TileSheetEditorImGui::draw(studio::Context&) noexcept {
|
void TileSheetEditorImGui::draw(studio::Context&) noexcept {
|
||||||
setCopyEnabled(m_model.hasSelection());
|
setCopyEnabled(m_model.hasSelection());
|
||||||
setCutEnabled(m_model.hasSelection());
|
setCutEnabled(m_model.hasSelection());
|
||||||
setPasteEnabled(m_model.hasSelection());
|
|
||||||
if (ig::mainWinHasFocus() && m_tool == TileSheetTool::Select) {
|
if (ig::mainWinHasFocus() && m_tool == TileSheetTool::Select) {
|
||||||
if (ImGui::IsKeyDown(ImGuiKey_ModCtrl) && !m_palPathFocused) {
|
if (ImGui::IsKeyDown(ImGuiKey_ModCtrl) && !m_palPathFocused) {
|
||||||
if (ImGui::IsKeyPressed(ImGuiKey_A)) {
|
if (ImGui::IsKeyPressed(ImGuiKey_A)) {
|
||||||
@@ -279,7 +278,7 @@ void TileSheetEditorImGui::draw(studio::Context&) noexcept {
|
|||||||
auto insertOnIdx = m_model.activeSubSheetIdx();
|
auto insertOnIdx = m_model.activeSubSheetIdx();
|
||||||
auto const &parent = m_model.activeSubSheet();
|
auto const &parent = m_model.activeSubSheet();
|
||||||
m_model.addSubsheet(insertOnIdx);
|
m_model.addSubsheet(insertOnIdx);
|
||||||
insertOnIdx.emplace_back(static_cast<uint32_t>(parent.subsheets.size() - 1));
|
insertOnIdx.emplace_back(parent.subsheets.size() - 1);
|
||||||
setActiveSubsheet(insertOnIdx);
|
setActiveSubsheet(insertOnIdx);
|
||||||
}
|
}
|
||||||
ImGui::SameLine();
|
ImGui::SameLine();
|
||||||
|
|||||||
@@ -80,9 +80,9 @@ void NewMenu::addItemMaker(ox::UPtr<ItemMaker> &&im) noexcept {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void NewMenu::installItemTemplate(ox::UPtr<ItemTemplate> &&tmplt) noexcept {
|
void NewMenu::installItemTemplate(ox::UPtr<ItemTemplate> &tmplt) noexcept {
|
||||||
for (auto const&im : m_types) {
|
for (auto const&im : m_types) {
|
||||||
if (im->installTemplate(std::move(tmplt))) {
|
if (im->installTemplate(tmplt)) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ class NewMenu final: public Popup {
|
|||||||
|
|
||||||
void addItemMaker(ox::UPtr<ItemMaker> &&im) noexcept;
|
void addItemMaker(ox::UPtr<ItemMaker> &&im) noexcept;
|
||||||
|
|
||||||
void installItemTemplate(ox::UPtr<ItemTemplate> &&tmplt) noexcept;
|
void installItemTemplate(ox::UPtr<ItemTemplate> &tmplt) noexcept;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void drawNewItemType(Context const&sctx) noexcept;
|
void drawNewItemType(Context const&sctx) noexcept;
|
||||||
|
|||||||
@@ -438,7 +438,7 @@ void StudioUI::loadModule(Module const &mod) noexcept {
|
|||||||
}
|
}
|
||||||
auto tmplts = mod.itemTemplates(m_sctx);
|
auto tmplts = mod.itemTemplates(m_sctx);
|
||||||
for (auto &t : tmplts) {
|
for (auto &t : tmplts) {
|
||||||
m_newMenu.installItemTemplate(std::move(t));
|
m_newMenu.installItemTemplate(t);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -649,9 +649,6 @@ ox::Error StudioUI::openProjectPath(ox::StringParam path) noexcept {
|
|||||||
ox::make_unique_catch<Project>(keelCtx(m_tctx), std::move(path), m_projectDataDir)
|
ox::make_unique_catch<Project>(keelCtx(m_tctx), std::move(path), m_projectDataDir)
|
||||||
.moveTo(m_project));
|
.moveTo(m_project));
|
||||||
m_sctx.project = m_project.get();
|
m_sctx.project = m_project.get();
|
||||||
m_activeEditor = nullptr;
|
|
||||||
m_activeEditorOnLastDraw = nullptr;
|
|
||||||
m_activeEditorUpdatePending = nullptr;
|
|
||||||
turbine::setWindowTitle(
|
turbine::setWindowTitle(
|
||||||
m_tctx, ox::sfmt("{} - {}", keelCtx(m_tctx).appName, m_project->projectPath()));
|
m_tctx, ox::sfmt("{} - {}", keelCtx(m_tctx).appName, m_project->projectPath()));
|
||||||
m_deleteConfirmation.deleteFile.connect(m_sctx.project, &Project::deleteItem);
|
m_deleteConfirmation.deleteFile.connect(m_sctx.project, &Project::deleteItem);
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ class ItemMaker {
|
|||||||
return m_typeDisplayName;
|
return m_typeDisplayName;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool installTemplate(ox::UPtr<ItemTemplate> &&tmpl) {
|
bool installTemplate(ox::UPtr<ItemTemplate> &tmpl) {
|
||||||
if (typeName() == tmpl->typeName() &&
|
if (typeName() == tmpl->typeName() &&
|
||||||
typeVersion() <= tmpl->typeVersion()) {
|
typeVersion() <= tmpl->typeVersion()) {
|
||||||
m_templates.emplace_back(std::move(tmpl));
|
m_templates.emplace_back(std::move(tmpl));
|
||||||
@@ -120,6 +120,10 @@ class ItemMaker {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool installTemplate(ox::UPtr<ItemTemplate> &&tmpl) {
|
||||||
|
return installTemplate(tmpl);
|
||||||
|
}
|
||||||
|
|
||||||
constexpr ox::Vector<ox::UPtr<ItemTemplate>> const&itemTemplates() const noexcept {
|
constexpr ox::Vector<ox::UPtr<ItemTemplate>> const&itemTemplates() const noexcept {
|
||||||
return m_templates;
|
return m_templates;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user