From 8c2bc80e0519a0cb0409cc172203d324f80bfc56 Mon Sep 17 00:00:00 2001 From: daiqingshuang Date: Tue, 20 Feb 2024 17:59:12 +0800 Subject: [PATCH] =?UTF-8?q?=E6=97=A0=E8=BE=B9=E6=A1=86=E7=AA=97=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/application/application.cpp | 7 +++---- core/application/application.h | 5 +++++ core/widget/uilts.h | 18 ++++++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 core/widget/uilts.h diff --git a/core/application/application.cpp b/core/application/application.cpp index 4617e69..8b2f371 100644 --- a/core/application/application.cpp +++ b/core/application/application.cpp @@ -50,10 +50,6 @@ void application::init(const window_params& in_window_params, int argc, char** a int application::run() { while (!g_exit_requested) { glfwPollEvents(); - g_exit_requested = glfwWindowShouldClose(window_); - if (g_exit_requested) - break; - renderer_->new_frame(window_); draw_gui(); renderer_->end_frame(window_); @@ -108,6 +104,7 @@ void application::init_glfw() { spdlog::error("Failed to initialize GLFW"); return; } + glfwWindowHint(GLFW_VISIBLE, GLFW_FALSE); } void application::init_imgui() { @@ -119,6 +116,8 @@ void application::init_imgui() { io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad; // Enable Gamepad Controls io.ConfigFlags |= ImGuiConfigFlags_DockingEnable; // Enable Docking io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable; // Enable Multi-Viewport / Platform Windows + io.ConfigViewportsNoAutoMerge = true; + io.ConfigViewportsNoTaskBarIcon = false; ImGui::StyleColorsDark(); //ImGui::StyleColorsLight(); } diff --git a/core/application/application.h b/core/application/application.h index e788008..3d6f482 100644 --- a/core/application/application.h +++ b/core/application/application.h @@ -49,6 +49,11 @@ public: virtual void shutdown(); + void request_exit() { + glfwSetWindowShouldClose(window_, GLFW_TRUE); + g_exit_requested = true; + } + virtual void draw_gui() = 0; virtual const char* get_shader_path() = 0; diff --git a/core/widget/uilts.h b/core/widget/uilts.h new file mode 100644 index 0000000..836817a --- /dev/null +++ b/core/widget/uilts.h @@ -0,0 +1,18 @@ +#pragma once +#include "extern.h" +#include "imgui.h" +#include "imgui_internal.h" + +extern "C" { + void HideTabBar(); +} + +namespace ImGui { + inline void HideTabBar() + { + ImGuiWindowClass window_class; + window_class.DockNodeFlagsOverrideSet = ImGuiDockNodeFlags_NoWindowMenuButton; + // window_class.DockNodeFlagsOverrideSet = ImGuiDockNodeFlags_NoTabBar; + SetNextWindowClass(&window_class); + } +} \ No newline at end of file