diff --git a/Osmium.cpp b/Osmium.cpp index 7bac715..a904512 100644 --- a/Osmium.cpp +++ b/Osmium.cpp @@ -1,16 +1,15 @@ -#include #include #include + #include #include #include - +#include int main(int argc, char **argv) { std::cout << "Hello working!" << std::endl; - - - + static bool dragging_window = false; + static ImVec2 move_offset; glfwInit(); glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3); @@ -18,9 +17,7 @@ int main(int argc, char **argv) { glfwWindowHint(GLFW_DECORATED, GLFW_FALSE); glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE); - - - //make the window + // make the window GLFWwindow *window = glfwCreateWindow(640, 480, "OpenGL Demo", NULL, NULL); if (!window) { @@ -29,52 +26,62 @@ int main(int argc, char **argv) { return -1; } glfwMakeContextCurrent(window); - //d + // d - //load graphics + // load graphics if (!gladLoadGLLoader((GLADloadproc)glfwGetProcAddress)) { std::cerr << "Failed to initialize OpenGL loader!" << std::endl; return -1; } glViewport(0, 0, 640, 480); - //d + // d - //now make ImGui + // now make ImGui IMGUI_CHECKVERSION(); ImGui::CreateContext(); - ImGuiIO& io = ImGui::GetIO(); (void)io; + ImGuiIO &io = ImGui::GetIO(); + (void)io; ImGui::StyleColorsDark(); ImGui_ImplGlfw_InitForOpenGL(window, true); ImGui_ImplOpenGL3_Init("#version 130"); - ///im a dumbass - ///d + /// im a dumbass + /// - - - - - - - - - - - - - //program + // program while (!glfwWindowShouldClose(window)) { - glClearColor(1.0f,.5f,.2f, 1.0f); + glClearColor(1.0f, .5f, .2f, 1.0f); glClear(GL_COLOR_BUFFER_BIT); glfwPollEvents(); - ImGui_ImplOpenGL3_NewFrame(); ImGui_ImplGlfw_NewFrame(); ImGui::NewFrame(); ImGui::BeginMainMenuBar(); + ImVec2 mouse_pos = ImGui::GetMousePos(); + ImVec2 window_pos = ImGui::GetWindowPos(); + + if (ImGui::IsMouseDown(0) && ImGui::IsItemHovered()) { + + if (!dragging_window) { + dragging_window = true; + move_offset = ImVec2(mouse_pos.x - window_pos.x, + mouse_pos.y - window_pos.y); + } + + int new_x = static_cast(mouse_pos.x - move_offset.x); + int new_y = static_cast(mouse_pos.y - move_offset.y); + glfwSetWindowPos(window, new_x, new_y); + + } else { + + dragging_window = false; + } + + + if (ImGui::BeginMenu("File")) { ImGui::MenuItem("Exit"); ImGui::EndMenu(); @@ -88,14 +95,10 @@ int main(int argc, char **argv) { ImGui::Render(); ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData()); glfwSwapBuffers(window); - } - glfwDestroyWindow(window); glfwTerminate(); - return 0; } -