From cc171c8be9fbbf9051f60e6f2d914ead4ddb6d12 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Tue, 10 Oct 2023 00:06:35 +0100 Subject: [PATCH 1/7] Show rooms and items in the same find box Puts items and rooms in the same box, tests updated but not complete #1189 --- trview.app.tests/UI/GoToTests.cpp | 47 ++++------------------------- trview.app/UI/GoTo.cpp | 14 ++------- trview.app/UI/GoTo.h | 14 ++++----- trview.app/UI/ViewerUI.cpp | 49 +++++++++++++------------------ 4 files changed, 33 insertions(+), 91 deletions(-) diff --git a/trview.app.tests/UI/GoToTests.cpp b/trview.app.tests/UI/GoToTests.cpp index cff837ff6..cd4598b96 100644 --- a/trview.app.tests/UI/GoToTests.cpp +++ b/trview.app.tests/UI/GoToTests.cpp @@ -4,47 +4,12 @@ using namespace trview; using namespace trview::tests; -TEST(GoTo, Name) -{ - GoTo window; - window.toggle_visible(); - - ASSERT_EQ(window.name(), ""); - window.set_name("Item"); - ASSERT_EQ(window.name(), "Item"); - - TestImgui imgui([&]() { window.render(); }); - ASSERT_NE(imgui.find_window(imgui.popup_id("Go To Item").name()), nullptr); -} - -TEST(GoTo, OnSelectedNotRaisedWhenMinusPressedAtZero) -{ - GoTo window; - window.toggle_visible(); - window.set_name("Item"); - - std::optional raised; - auto token = window.on_selected += [&](auto value) - { - raised = value; - }; - - TestImgui imgui([&]() { window.render(); }); - imgui.click_element( - imgui.popup_id("Go To Item").push("##gotoentry").id("-"), - false, - imgui.popup_id("Go To Item").id("##gotoentry")); - - ASSERT_FALSE(raised.has_value()); -} - TEST(GoTo, OnSelectedRaisedNumber) { GoTo window; window.toggle_visible(); - window.set_name("Item"); window.set_items({ { .number = 10, .name = "Room Ten" } }); - std::optional raised; + std::optional raised; auto token = window.on_selected += [&](auto value) { raised = value; @@ -59,7 +24,7 @@ TEST(GoTo, OnSelectedRaisedNumber) imgui.render(); ASSERT_TRUE(raised.has_value()); - ASSERT_EQ(raised.value(), 10u); + ASSERT_EQ(raised.value().number, 10u); ASSERT_FALSE(window.visible()); } @@ -67,9 +32,8 @@ TEST(GoTo, OnSelectedRaisedText) { GoTo window; window.toggle_visible(); - window.set_name("Item"); window.set_items({ {.number = 10, .name = "Room Ten" } }); - std::optional raised; + std::optional raised; auto token = window.on_selected += [&](auto value) { raised = value; @@ -84,7 +48,7 @@ TEST(GoTo, OnSelectedRaisedText) imgui.render(); ASSERT_TRUE(raised.has_value()); - ASSERT_EQ(raised.value(), 10u); + ASSERT_EQ(raised.value().number, 10u); ASSERT_FALSE(window.visible()); } @@ -92,9 +56,8 @@ TEST(GoTo, OnSelectedNotRaisedWhenCancelled) { GoTo window; window.toggle_visible(); - window.set_name("Item"); - std::optional raised; + std::optional raised; auto token = window.on_selected += [&](auto value) { raised = value; diff --git a/trview.app/UI/GoTo.cpp b/trview.app/UI/GoTo.cpp index b989aabe7..362bd9653 100644 --- a/trview.app/UI/GoTo.cpp +++ b/trview.app/UI/GoTo.cpp @@ -15,16 +15,6 @@ namespace trview _current_input.clear(); } - std::string GoTo::name() const - { - return _name; - } - - void GoTo::set_name(const std::string& name) - { - _name = name; - } - void GoTo::set_items(const std::vector& items) { _items = items; @@ -37,7 +27,7 @@ namespace trview const auto viewport = ImGui::GetMainViewport(); ImGui::SetNextWindowPos(viewport->Pos + ImVec2(viewport->Size.x * 0.5f, viewport->Size.y * 0.25f), 0, ImVec2(0.5f, 0.5f)); - const std::string id = std::format("Go To {}", _name); + const std::string id = "Find"; if (!_shown) { ImGui::OpenPopup(id.c_str()); @@ -118,7 +108,7 @@ namespace trview if (ImGui::Selectable(item_id.c_str(), false, ImGuiSelectableFlags_DontClosePopups | static_cast(ImGuiSelectableFlags_SelectOnNav))) { - on_selected(item.number); + on_selected(item); } any_selected |= ImGui::GetCurrentContext()->NavId == ImGui::GetCurrentWindow()->GetID(item_id.c_str()); diff --git a/trview.app/UI/GoTo.h b/trview.app/UI/GoTo.h index a3c7c2c2c..236441a5a 100644 --- a/trview.app/UI/GoTo.h +++ b/trview.app/UI/GoTo.h @@ -7,11 +7,15 @@ #pragma once #include +#include #include #include namespace trview { + struct IItem; + struct IRoom; + /// This window presents the user with a box where they can enter the number of the thing /// that they want to go to. Then when they press enter, that will be the selected. class GoTo final @@ -21,6 +25,7 @@ namespace trview { uint32_t number; std::string name; + std::variant, std::weak_ptr> item; }; /// Gets whether the window is currently visible. @@ -32,19 +37,12 @@ namespace trview /// Event raised when the user selects a new room. The newly selected room is passed as /// a parameter when the event is raised. - Event on_selected; - - /// Get the name of the type of thing being selected. - std::string name() const; + Event on_selected; void render(); - /// Set the name of the type of thing that is being gone to. - void set_name(const std::string& name); - void set_items(const std::vector& items); private: - std::string _name; bool _visible{ false }; bool _shown{ false }; std::vector _items; diff --git a/trview.app/UI/ViewerUI.cpp b/trview.app/UI/ViewerUI.cpp index a91b52557..24ab49153 100644 --- a/trview.app/UI/ViewerUI.cpp +++ b/trview.app/UI/ViewerUI.cpp @@ -40,40 +40,29 @@ namespace trview _map_renderer->set_cursor_position(client_cursor_position(_window)); }; - _token_store += shortcuts->add_shortcut(true, 'G') += [&]() + _token_store += shortcuts->add_shortcut(true, 'F') += [&]() { if (!is_input_active()) { _tooltip->set_visible(false); - _go_to->set_name("Room"); _go_to->toggle_visible(); if (auto level = _level.lock()) { - _go_to->set_items( - level->rooms() + auto items = level->items() + | std::views::transform([](auto&& i) { return i.lock(); }) + | std::views::filter([](auto&& i) { return i != nullptr; }) + | std::views::transform([](auto&& i) -> GoTo::GoToItem { return { .number = i->number(), .name = i->type(), .item = i }; }) + | std::ranges::to(); + + const auto rooms = level->rooms() | std::views::transform([](auto&& r) { return r.lock(); }) | std::views::filter([](auto&& r) { return r != nullptr; }) - | std::views::transform([](auto&& r) -> GoTo::GoToItem { return { .number = r->number(), .name = std::format("Room {}", r->number()) }; }) - | std::ranges::to()); - } - } - }; + | std::views::transform([](auto&& r) -> GoTo::GoToItem { return { .number = r->number(), .name = std::format("Room {}", r->number()), .item = r }; }) + | std::ranges::to(); - _token_store += shortcuts->add_shortcut(true, 'E') += [&]() - { - if (!is_input_active()) - { - _tooltip->set_visible(false); - _go_to->set_name("Item"); - _go_to->toggle_visible(); - if (auto level = _level.lock()) - { - _go_to->set_items( - level->items() - | std::views::transform([](auto&& i) { return i.lock(); }) - | std::views::filter([](auto&& i) { return i != nullptr; }) - | std::views::transform([](auto&& i) -> GoTo::GoToItem { return { .number = i->number(), .name = i->type() }; }) - | std::ranges::to()); + items.insert(items.end(), rooms.begin(), rooms.end()); + + _go_to->set_items(items); } } }; @@ -81,16 +70,18 @@ namespace trview generate_tool_window(); _go_to = std::make_unique(); - _token_store += _go_to->on_selected += [&](uint32_t index) + _token_store += _go_to->on_selected += [&](const GoTo::GoToItem& item) { _tooltip->set_visible(false); - if (_go_to->name() == "Item") + if (std::holds_alternative>(item.item)) { - on_select_item(index); + const auto i = std::get>(item.item).lock(); + on_select_item(i->number()); } - else + else if (std::holds_alternative>(item.item)) { - on_select_room(index); + const auto r = std::get>(item.item).lock(); + on_select_room(r->number()); } }; From f3274e22b75f27003f7532de906e3255f944beb0 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Tue, 10 Oct 2023 00:33:40 +0100 Subject: [PATCH 2/7] Forward item Not room yet though #1189 --- trview.app.tests/Windows/ViewerTests.cpp | 22 ++++------------------ trview.app/UI/IViewerUI.h | 8 +++++--- trview.app/UI/ViewerUI.cpp | 14 +++++++++----- trview.app/Windows/Viewer.cpp | 13 +++++-------- 4 files changed, 23 insertions(+), 34 deletions(-) diff --git a/trview.app.tests/Windows/ViewerTests.cpp b/trview.app.tests/Windows/ViewerTests.cpp index 27649ae23..774f951c9 100644 --- a/trview.app.tests/Windows/ViewerTests.cpp +++ b/trview.app.tests/Windows/ViewerTests.cpp @@ -119,7 +119,6 @@ TEST(Viewer, SelectItemRaisedForValidItem) auto item = mock_shared(); auto level = mock_shared(); - EXPECT_CALL(*level, item(123)).WillRepeatedly(Return(item)); auto viewer = register_test_module().with_ui(std::move(ui_ptr)).build(); viewer->open(level, ILevel::OpenMode::Full); @@ -127,26 +126,12 @@ TEST(Viewer, SelectItemRaisedForValidItem) std::shared_ptr raised_item; auto token = viewer->on_item_selected += [&raised_item](const auto& item) { raised_item = item.lock(); }; - ui.on_select_item(123); + ui.on_select_item(item); ASSERT_TRUE(raised_item); ASSERT_EQ(raised_item, item); } -/// Tests that the on_hide event from the UI is observed but not forwarded when the item is invalid. -TEST(Viewer, SelectItemNotRaisedForInvalidItem) -{ - auto [ui_ptr, ui] = create_mock(); - auto viewer = register_test_module().with_ui(std::move(ui_ptr)).build(); - - std::shared_ptr raised_item; - auto token = viewer->on_item_selected += [&raised_item](const auto& item) { raised_item = item.lock(); }; - - ui.on_select_item(0); - - ASSERT_FALSE(raised_item); -} - /// Tests that the on_hide event from the UI is observed and forwarded when the item is valid. TEST(Viewer, ItemVisibilityRaisedForValidItem) { @@ -198,13 +183,14 @@ TEST(Viewer, SelectRoomRaised) auto [ui_ptr, ui] = create_mock(); auto viewer = register_test_module().with_ui(std::move(ui_ptr)).build(); + auto room = mock_shared()->with_number(100); std::optional raised_room; auto token = viewer->on_room_selected += [&raised_room](const auto& room) { raised_room = room; }; - ui.on_select_room(0); + ui.on_select_room(room); ASSERT_TRUE(raised_room.has_value()); - ASSERT_EQ(raised_room.value(), 0u); + ASSERT_EQ(raised_room.value(), 100u); } /// Tests that the trigger selected event is raised when the user clicks on a trigger. diff --git a/trview.app/UI/IViewerUI.h b/trview.app/UI/IViewerUI.h index bb6d5468b..265c84091 100644 --- a/trview.app/UI/IViewerUI.h +++ b/trview.app/UI/IViewerUI.h @@ -4,7 +4,6 @@ #include #include -#include #include #include #include "IContextMenu.h" @@ -14,6 +13,9 @@ namespace trview { + struct IRoom; + struct IItem; + enum class Tool { None, @@ -73,10 +75,10 @@ namespace trview Event> on_sector_hover; /// Event raised when an item is selected. - Event on_select_item; + Event> on_select_item; /// Event raised when a room is selected. - Event on_select_room; + Event> on_select_room; /// Event raised when the user settings are changed. Event on_settings; diff --git a/trview.app/UI/ViewerUI.cpp b/trview.app/UI/ViewerUI.cpp index 24ab49153..3ad0c6757 100644 --- a/trview.app/UI/ViewerUI.cpp +++ b/trview.app/UI/ViewerUI.cpp @@ -75,13 +75,11 @@ namespace trview _tooltip->set_visible(false); if (std::holds_alternative>(item.item)) { - const auto i = std::get>(item.item).lock(); - on_select_item(i->number()); + on_select_item(std::get>(item.item)); } else if (std::holds_alternative>(item.item)) { - const auto r = std::get>(item.item).lock(); - on_select_room(r->number()); + on_select_room(std::get>(item.item)); } }; @@ -205,7 +203,13 @@ namespace trview _view_options->on_alternate_group += on_alternate_group; _room_navigator = std::make_unique(); - _room_navigator->on_room_selected += on_select_room; + _token_store += _room_navigator->on_room_selected += [&](const auto index) + { + if (auto level = _level.lock()) + { + on_select_room(level->room(index)); + } + }; _camera_controls->on_reset += on_camera_reset; _camera_controls->on_mode_selected += on_camera_mode; diff --git a/trview.app/Windows/Viewer.cpp b/trview.app/Windows/Viewer.cpp index 41f68e4bc..f4c881273 100644 --- a/trview.app/Windows/Viewer.cpp +++ b/trview.app/Windows/Viewer.cpp @@ -83,17 +83,14 @@ namespace trview std::unordered_map> scalars; scalars[Options::depth] = [this](int32_t value) { if (auto level = _level.lock()) { level->set_neighbour_depth(value); } }; - _token_store += _ui->on_select_item += [&](uint32_t index) - { - if (auto level = _level.lock()) + _token_store += _ui->on_select_item += [&](const auto& item) { on_item_selected(item); }; + _token_store += _ui->on_select_room += [&](const auto& room) { - if (const auto item = level->item(index).lock()) + if (auto r = room.lock()) { - on_item_selected(item); + on_room_selected(r->number()); } - } - }; - _token_store += _ui->on_select_room += [&](uint32_t room) { on_room_selected(room); }; + }; _token_store += _ui->on_toggle_changed += [this, toggles, persist_toggle_value](const std::string& name, bool value) { auto toggle = toggles.find(name); From 872f94681b906eb64139c889b27ad760cc53e2b1 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Tue, 10 Oct 2023 19:19:18 +0100 Subject: [PATCH 3/7] Add triggers to the find window #1189 --- trview.app/UI/GoTo.h | 3 ++- trview.app/UI/ViewerUI.cpp | 11 +++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/trview.app/UI/GoTo.h b/trview.app/UI/GoTo.h index 236441a5a..afa7cb2eb 100644 --- a/trview.app/UI/GoTo.h +++ b/trview.app/UI/GoTo.h @@ -15,6 +15,7 @@ namespace trview { struct IItem; struct IRoom; + struct ITrigger; /// This window presents the user with a box where they can enter the number of the thing /// that they want to go to. Then when they press enter, that will be the selected. @@ -25,7 +26,7 @@ namespace trview { uint32_t number; std::string name; - std::variant, std::weak_ptr> item; + std::variant, std::weak_ptr, std::weak_ptr> item; }; /// Gets whether the window is currently visible. diff --git a/trview.app/UI/ViewerUI.cpp b/trview.app/UI/ViewerUI.cpp index 3ad0c6757..405c001b1 100644 --- a/trview.app/UI/ViewerUI.cpp +++ b/trview.app/UI/ViewerUI.cpp @@ -54,12 +54,19 @@ namespace trview | std::views::transform([](auto&& i) -> GoTo::GoToItem { return { .number = i->number(), .name = i->type(), .item = i }; }) | std::ranges::to(); + const auto triggers = level->triggers() + | std::views::transform([](auto&& t) { return t.lock(); }) + | std::views::filter([](auto&& t) { return t != nullptr; }) + | std::views::transform([](auto&& t) -> GoTo::GoToItem { return { .number = t->number(), .name = std::format("Trigger {}", t->number()), .item = t }; }) + | std::ranges::to(); + const auto rooms = level->rooms() | std::views::transform([](auto&& r) { return r.lock(); }) | std::views::filter([](auto&& r) { return r != nullptr; }) | std::views::transform([](auto&& r) -> GoTo::GoToItem { return { .number = r->number(), .name = std::format("Room {}", r->number()), .item = r }; }) | std::ranges::to(); + items.insert(items.end(), triggers.begin(), triggers.end()); items.insert(items.end(), rooms.begin(), rooms.end()); _go_to->set_items(items); @@ -77,6 +84,10 @@ namespace trview { on_select_item(std::get>(item.item)); } + else if (std::holds_alternative>(item.item)) + { + on_select_trigger(std::get>(item.item)); + } else if (std::holds_alternative>(item.item)) { on_select_room(std::get>(item.item)); From 4f9f0b932c69906f96fe82b26da8dcb7c6743102 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Tue, 10 Oct 2023 22:05:25 +0100 Subject: [PATCH 4/7] Use trigger type name instead of the word trigger #1189 --- trview.app/UI/ViewerUI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trview.app/UI/ViewerUI.cpp b/trview.app/UI/ViewerUI.cpp index 405c001b1..de3396141 100644 --- a/trview.app/UI/ViewerUI.cpp +++ b/trview.app/UI/ViewerUI.cpp @@ -57,7 +57,7 @@ namespace trview const auto triggers = level->triggers() | std::views::transform([](auto&& t) { return t.lock(); }) | std::views::filter([](auto&& t) { return t != nullptr; }) - | std::views::transform([](auto&& t) -> GoTo::GoToItem { return { .number = t->number(), .name = std::format("Trigger {}", t->number()), .item = t }; }) + | std::views::transform([](auto&& t) -> GoTo::GoToItem { return { .number = t->number(), .name = trigger_type_name(t->type()), .item = t }; }) | std::ranges::to(); const auto rooms = level->rooms() From 6686f607c176f63e82b4a4610c57b592d3e94376 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Tue, 10 Oct 2023 23:23:09 +0100 Subject: [PATCH 5/7] Docs for the find window #1189 --- README.md | 18 +++++------------- doc/find.png | Bin 0 -> 19460 bytes doc/go_to_item.png | Bin 1532 -> 0 bytes doc/go_to_room.png | Bin 1632 -> 0 bytes trview.app/UI/ViewerUI.cpp | 8 +++----- trview.sln | 2 -- 6 files changed, 8 insertions(+), 20 deletions(-) create mode 100644 doc/find.png delete mode 100644 doc/go_to_item.png delete mode 100644 doc/go_to_room.png diff --git a/README.md b/README.md index 4a8d6387a..cab83adef 100644 --- a/README.md +++ b/README.md @@ -39,8 +39,7 @@ a level file using the File menu or drag and drop a level file onto the window. Key|Action ---|------ CTRL + O | Open file -CTRL + G | Show 'go to room' box -CTRL + E | Show 'go to item' box +CTRL + F | Show find window CTRL + R | Open Route window CTRL + T | New Triggers window CTRL + I | New Items window @@ -177,19 +176,12 @@ Orthographic mode can be useful when paired with the compass selector to choose ### Reset Reset the orbit camera to default rotation. -## Go To Room -_Shortcut: Ctrl+G_ +## Find +_Shortcut: Ctrl+F_ -Enter a room number and press enter to go to that room. +Enter the number or name to search through all available items, triggers or rooms. The results will be presented below and selecting them with the arrow keys or clicking them will select them in the viewer. -![Go To Room](doc/go_to_room.png) - -## Go To Item -_Shortcut: Ctrl+E_ - -Enter an item number and press enter to go to that item. - -![Go To Item](doc/go_to_item.png) +![Find](doc/find.png) ## Minimap diff --git a/doc/find.png b/doc/find.png new file mode 100644 index 0000000000000000000000000000000000000000..e1637ad1d558b1775148c65be72c3deac7acda5f GIT binary patch literal 19460 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 XWL&I{W`YdS00000NkvXXu0mjf-3fK| literal 0 HcmV?d00001 diff --git a/doc/go_to_item.png b/doc/go_to_item.png deleted file mode 100644 index f7110793771df3e8fd3c9852c85f26eac0839c4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 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 zU@toggle_visible(); if (auto level = _level.lock()) { - auto items = level->items() + const auto items = level->items() | std::views::transform([](auto&& i) { return i.lock(); }) | std::views::filter([](auto&& i) { return i != nullptr; }) | std::views::transform([](auto&& i) -> GoTo::GoToItem { return { .number = i->number(), .name = i->type(), .item = i }; }) @@ -66,10 +66,8 @@ namespace trview | std::views::transform([](auto&& r) -> GoTo::GoToItem { return { .number = r->number(), .name = std::format("Room {}", r->number()), .item = r }; }) | std::ranges::to(); - items.insert(items.end(), triggers.begin(), triggers.end()); - items.insert(items.end(), rooms.begin(), rooms.end()); - - _go_to->set_items(items); + const auto all = { items, triggers, rooms }; + _go_to->set_items(std::views::join(all) | std::ranges::to()); } } }; diff --git a/trview.sln b/trview.sln index 892314c5e..e43f436b6 100644 --- a/trview.sln +++ b/trview.sln @@ -59,8 +59,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "doc", "doc", "{B3A7F8A1-CC6 doc\context_menu.png = doc\context_menu.png doc\filters_1.png = doc\filters_1.png doc\filters_2.png = doc\filters_2.png - doc\go_to_item.png = doc\go_to_item.png - doc\go_to_room.png = doc\go_to_room.png doc\items.png = doc\items.png doc\level_info.png = doc\level_info.png doc\lights.png = doc\lights.png From f3dd97fd003f30dbe96669ff985814e6f5ccca76 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Sat, 14 Oct 2023 01:50:35 +0100 Subject: [PATCH 6/7] Add type information on to search results This makes it clear what type of thing it is especially with triggers and items #1189 --- trview.app/UI/GoTo.cpp | 19 ++++++++++++++++++- trview.app/UI/GoTo.h | 2 ++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/trview.app/UI/GoTo.cpp b/trview.app/UI/GoTo.cpp index 362bd9653..5f63c9d7d 100644 --- a/trview.app/UI/GoTo.cpp +++ b/trview.app/UI/GoTo.cpp @@ -3,6 +3,23 @@ namespace trview { + std::string GoTo::GoToItem::type() const + { + if (std::holds_alternative>(item)) + { + return "Item"; + } + else if (std::holds_alternative>(item)) + { + return "Trigger"; + } + else if (std::holds_alternative>(item)) + { + return "Room"; + } + return "?"; + } + bool GoTo::visible() const { return _visible; @@ -97,7 +114,7 @@ namespace trview list_focused = true; } - const auto item_id = std::format("{} - {}", item.number, item.name); + const auto item_id = std::format("{} {} - {}", item.type(), item.number, item.name); if (first_item && ImGui::GetCurrentContext()->NavId == ImGui::GetCurrentWindow()->GetID(item_id.c_str()) && ImGui::IsKeyPressed(ImGuiKey_UpArrow)) diff --git a/trview.app/UI/GoTo.h b/trview.app/UI/GoTo.h index afa7cb2eb..0889b5c68 100644 --- a/trview.app/UI/GoTo.h +++ b/trview.app/UI/GoTo.h @@ -27,6 +27,8 @@ namespace trview uint32_t number; std::string name; std::variant, std::weak_ptr, std::weak_ptr> item; + + std::string type() const; }; /// Gets whether the window is currently visible. From a895fef8a53aa4c26451f584df7510f6d8b87988 Mon Sep 17 00:00:00 2001 From: chreden <4263940+chreden@users.noreply.github.com> Date: Sun, 15 Oct 2023 01:23:04 +0100 Subject: [PATCH 7/7] Update find.png --- doc/find.png | Bin 19460 -> 27315 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/find.png b/doc/find.png index e1637ad1d558b1775148c65be72c3deac7acda5f..bfaea95b809262b9d1f038ac1fc20c75f39d50fd 100644 GIT binary patch literal 27315 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 MALyu-D!+LBKevpC^Z)<= literal 19460 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 XWL&I{W`YdS00000NkvXXu0mjf-3fK|