diff options
author | crupest <crupest@outlook.com> | 2022-01-29 21:07:48 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-01-29 21:07:48 +0800 |
commit | 30060773b06d93ae08a8c6fa5836c81e595594ed (patch) | |
tree | f333e807eef86442eff0b489bb2460bfbf99e794 | |
parent | 90261a333f251cc241f186f0ee6ed8e12787cc02 (diff) | |
download | cru-30060773b06d93ae08a8c6fa5836c81e595594ed.tar.gz cru-30060773b06d93ae08a8c6fa5836c81e595594ed.tar.bz2 cru-30060773b06d93ae08a8c6fa5836c81e595594ed.zip |
...
-rw-r--r-- | include/cru/osx/gui/Window.hpp | 2 | ||||
-rw-r--r-- | include/cru/platform/gui/Window.hpp | 2 | ||||
-rw-r--r-- | src/osx/gui/Window.mm | 6 | ||||
-rw-r--r-- | src/theme_builder/CMakeLists.txt | 5 | ||||
-rw-r--r-- | src/theme_builder/components/MainWindow.cpp | 19 | ||||
-rw-r--r-- | src/theme_builder/components/MainWindow.hpp | 22 | ||||
-rw-r--r-- | src/theme_builder/main.cpp | 8 |
7 files changed, 62 insertions, 2 deletions
diff --git a/include/cru/osx/gui/Window.hpp b/include/cru/osx/gui/Window.hpp index 4606aa84..904a0188 100644 --- a/include/cru/osx/gui/Window.hpp +++ b/include/cru/osx/gui/Window.hpp @@ -60,6 +60,8 @@ class OsxWindow : public OsxGuiResource, public INativeWindow { void SetCursor(std::shared_ptr<ICursor> cursor) override; + void SetToForeground() override; + void RequestRepaint() override; std::unique_ptr<graphics::IPainter> BeginPaint() override; diff --git a/include/cru/platform/gui/Window.hpp b/include/cru/platform/gui/Window.hpp index 0de5127e..c163bc14 100644 --- a/include/cru/platform/gui/Window.hpp +++ b/include/cru/platform/gui/Window.hpp @@ -83,6 +83,8 @@ struct INativeWindow : virtual IPlatformResource { virtual void SetCursor(std::shared_ptr<ICursor> cursor) = 0; + virtual void SetToForeground() = 0; + virtual void RequestRepaint() = 0; // Remember to call EndDraw on return value and destroy it. diff --git a/src/osx/gui/Window.mm b/src/osx/gui/Window.mm index 3bea5543..6ed53701 100644 --- a/src/osx/gui/Window.mm +++ b/src/osx/gui/Window.mm @@ -375,6 +375,12 @@ void OsxWindow::SetCursor(std::shared_ptr<ICursor> cursor) { } } +void OsxWindow::SetToForeground() { + if (!p_->window_) return; + [p_->window_ makeMainWindow]; + [p_->window_ orderFrontRegardless]; +} + IEvent<std::nullptr_t>* OsxWindow::CreateEvent() { return &p_->create_event_; } IEvent<std::nullptr_t>* OsxWindow::DestroyEvent() { return &p_->destroy_event_; } IEvent<std::nullptr_t>* OsxWindow::PaintEvent() { return &p_->paint_event_; } diff --git a/src/theme_builder/CMakeLists.txt b/src/theme_builder/CMakeLists.txt index 3190f6fa..e6ef1873 100644 --- a/src/theme_builder/CMakeLists.txt +++ b/src/theme_builder/CMakeLists.txt @@ -1,4 +1,7 @@ -add_executable(cru_theme_builder main.cpp) +add_executable(cru_theme_builder + main.cpp + components/MainWindow.cpp +) if(APPLE) set_target_properties(cru_theme_builder PROPERTIES diff --git a/src/theme_builder/components/MainWindow.cpp b/src/theme_builder/components/MainWindow.cpp new file mode 100644 index 00000000..3d521d44 --- /dev/null +++ b/src/theme_builder/components/MainWindow.cpp @@ -0,0 +1,19 @@ +#include "MainWindow.hpp" + +namespace cru::theme_builder { +using namespace cru::ui; +using namespace cru::ui::controls; +using namespace cru::platform::gui; + +MainWindow::MainWindow() { + window_ = Window::Create(); + window_->GetNativeWindow()->SetTitle(u"CruUI Theme Builder"); +} + +MainWindow::~MainWindow() { delete window_; } + +void MainWindow::Show() { + window_->GetNativeWindow()->SetVisibility(WindowVisibilityType::Show); + window_->GetNativeWindow()->SetToForeground(); +} +} // namespace cru::theme_builder diff --git a/src/theme_builder/components/MainWindow.hpp b/src/theme_builder/components/MainWindow.hpp new file mode 100644 index 00000000..fd7f7996 --- /dev/null +++ b/src/theme_builder/components/MainWindow.hpp @@ -0,0 +1,22 @@ +#pragma once +#include "cru/ui/components/Component.hpp" +#include "cru/ui/controls/Window.hpp" + +namespace cru::theme_builder { +class MainWindow : public ui::components::Component { + public: + MainWindow(); + + CRU_DELETE_COPY(MainWindow) + CRU_DELETE_MOVE(MainWindow) + + ~MainWindow() override; + + ui::controls::Control* GetRootControl() override { return window_; } + + void Show(); + + private: + ui::controls::Window* window_; +}; +} // namespace cru::theme_builder diff --git a/src/theme_builder/main.cpp b/src/theme_builder/main.cpp index 4ba2a28a..8c79f2c0 100644 --- a/src/theme_builder/main.cpp +++ b/src/theme_builder/main.cpp @@ -1,9 +1,15 @@ +#include "components/MainWindow.hpp" #include "cru/platform/bootstrap/Bootstrap.hpp" -#include "cru/platform/gui/UiApplication.hpp" int main() { + using namespace cru::theme_builder; + std::unique_ptr<cru::platform::gui::IUiApplication> application( cru::platform::bootstrap::CreateUiApplication()); + auto main_window = std::make_unique<MainWindow>(); + + main_window->Show(); + return application->Run(); } |