From 03b1589b5d2847e4de2ebca320622078983d4f4b Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Wed, 17 Jun 2020 18:52:07 +0200
Subject: [PATCH] Viewport works

---
 imgui.ini | 10 +++++-----
 main.cpp  | 14 +++++++++++---
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/imgui.ini b/imgui.ini
index dcee242..2e48e74 100644
--- a/imgui.ini
+++ b/imgui.ini
@@ -4,14 +4,14 @@ Size=400,400
 Collapsed=0
 
 [Window][Hello, world!]
-Pos=247,642
-Size=641,293
+Pos=745,530
+Size=643,193
 Collapsed=0
 DockId=0x00000003,0
 
 [Window][Dear ImGui Demo]
-Pos=247,34
-Size=641,606
+Pos=745,128
+Size=643,400
 Collapsed=0
 DockId=0x00000002,0
 
@@ -81,7 +81,7 @@ Size=771,465
 Collapsed=0
 
 [Docking][Data]
-DockNode    ID=0x00000001 Pos=247,34 Size=641,901 Split=Y
+DockNode    ID=0x00000001 Pos=745,146 Size=643,595 Split=Y
   DockNode  ID=0x00000002 Parent=0x00000001 SizeRef=849,526 Selected=0xE927CF2F
   DockNode  ID=0x00000003 Parent=0x00000001 SizeRef=849,254 Selected=0xEBE6C6E6
 
diff --git a/main.cpp b/main.cpp
index ca1bac1..0fb0e24 100644
--- a/main.cpp
+++ b/main.cpp
@@ -96,9 +96,7 @@ int main(int argc, char **argv)
     ImGuiIO& io = ImGui::GetIO(); (void)io;
     io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
     io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
-    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;     // Enable Keyboard Controls
-    //io.ConfigFlags |= ImGuiConfigFlags_NavEnableGamepad;      // Enable Gamepad Controls
-    // Setup Dear ImGui style
+    io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;
     ImGui::StyleColorsDark();
     ImGui_ImplSDL2_InitForOpenGL(window, gl_context);
     ImGui_ImplOpenGL3_Init(glsl_version);
@@ -231,6 +229,16 @@ int main(int argc, char **argv)
         // Rendering
         ImGui::Render();
         ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
+
+        if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
+        {
+            SDL_Window* backup_current_window = SDL_GL_GetCurrentWindow();
+            SDL_GLContext backup_current_context = SDL_GL_GetCurrentContext();
+            ImGui::UpdatePlatformWindows();
+            ImGui::RenderPlatformWindowsDefault();
+            SDL_GL_MakeCurrent(backup_current_window, backup_current_context);
+        }
+
         SDL_GL_SwapWindow(window);
     }
 
-- 
GitLab