mirror of
https://github.com/antopilo/Nuake.git
synced 2026-09-21 20:08:40 +03:00
Added window callbacks for focused and closed
This commit is contained in:
@@ -88,6 +88,20 @@ int Window::Init()
|
||||
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE); // To make MacOS happy; should not be needed
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
|
||||
glfwSetWindowUserPointer(window, this);
|
||||
|
||||
glfwSetWindowCloseCallback(window, [](GLFWwindow* nativeWindow)
|
||||
{
|
||||
Window* window = reinterpret_cast<Window*>(glfwGetWindowUserPointer(nativeWindow));
|
||||
window->OnWindowClosed(*window);
|
||||
});
|
||||
|
||||
glfwSetWindowFocusCallback(window, [](GLFWwindow* nativeWindow, int focused)
|
||||
{
|
||||
Window* window = reinterpret_cast<Window*>(glfwGetWindowUserPointer(nativeWindow));
|
||||
window->OnWindowFocused(*window, static_cast<bool>(focused));
|
||||
});
|
||||
|
||||
// TODO: have clear color in environnement.
|
||||
glClearColor(0.f, 0.f, 0.f, 1.0f);
|
||||
|
||||
@@ -324,6 +338,32 @@ void Window::Maximize()
|
||||
glfwMaximizeWindow(this->window);
|
||||
}
|
||||
|
||||
void Window::SetOnWindowFocusedCallback(std::function<void(Window& window, bool focused)> callback)
|
||||
{
|
||||
onWindowFocusedCallback = callback;
|
||||
}
|
||||
|
||||
void Window::SetOnWindowClosedCallback(std::function<void(Window& window)> callback)
|
||||
{
|
||||
onWindowClosedCallback = callback;
|
||||
}
|
||||
|
||||
void Window::OnWindowFocused(Window& window, bool focused)
|
||||
{
|
||||
if (onWindowFocusedCallback)
|
||||
{
|
||||
onWindowFocusedCallback(window, focused);
|
||||
}
|
||||
}
|
||||
|
||||
void Window::OnWindowClosed(Window& window)
|
||||
{
|
||||
if (onWindowClosedCallback)
|
||||
{
|
||||
onWindowClosedCallback(window);
|
||||
}
|
||||
}
|
||||
|
||||
void Window::InitImgui()
|
||||
{
|
||||
ImGui::CreateContext();
|
||||
|
||||
@@ -52,6 +52,12 @@ namespace Nuake
|
||||
void SetFullScreen(bool enabled);
|
||||
void Maximize();
|
||||
|
||||
void OnWindowFocused(Window& window, bool focused);
|
||||
void OnWindowClosed(Window& window);
|
||||
|
||||
void SetOnWindowFocusedCallback(std::function<void(Window& window, bool focused)> callback);
|
||||
void SetOnWindowClosedCallback(std::function<void(Window& window)> callback);
|
||||
|
||||
private:
|
||||
const std::string DEFAULT_TITLE = "Untitled Window";
|
||||
const uint32_t DEFAULT_WIDTH = 1280;
|
||||
@@ -67,6 +73,13 @@ namespace Nuake
|
||||
Ref<FrameBuffer> framebuffer;
|
||||
Ref<Scene> scene;
|
||||
|
||||
// Callbacks
|
||||
std::function<void(Window&)> onWindowClosedCallback;
|
||||
std::function<void(Window&, bool)> onWindowFocusedCallback;
|
||||
|
||||
void InitImgui();
|
||||
|
||||
private:
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user