Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dragging secondary viewports out of main viewport #7733

Open
Rakshitx1 opened this issue Jun 24, 2024 · 5 comments
Open

Dragging secondary viewports out of main viewport #7733

Rakshitx1 opened this issue Jun 24, 2024 · 5 comments

Comments

@Rakshitx1
Copy link

Version/Branch of Dear ImGui:

Branch: Docking

Back-ends:

imgui_impl_glfw.cpp + imgui_impl_opengl3.cpp

Compiler, OS:

Linux + clang 19

Full config/build information:

Dear ImGui 1.90.9 WIP (19083)
--------------------------------
sizeof(size_t): 8, sizeof(ImDrawIdx): 2, sizeof(ImDrawVert): 20
define: __cplusplus=201703
define: __linux__
define: __GNUC__=4
define: __clang_version__=19.0.0 (++20240620031356+e3eb12cce97f-1~exp1~20240620151533.1757)
define: IMGUI_HAS_VIEWPORT
define: IMGUI_HAS_DOCK
--------------------------------
io.BackendPlatformName: imgui_impl_glfw
io.BackendRendererName: imgui_impl_opengl3
io.ConfigFlags: 0x00000481
 NavEnableKeyboard
 DockingEnable
 ViewportsEnable
io.ConfigViewportsNoDecoration
io.ConfigInputTextCursorBlink
io.ConfigWindowsResizeFromEdges
io.ConfigMemoryCompactTimer = 60.0
io.BackendFlags: 0x00001C0E
 HasMouseCursors
 HasSetMousePos
 PlatformHasViewports
 HasMouseHoveredViewport
 RendererHasVtxOffset
 RendererHasViewports
--------------------------------
io.Fonts: 1 fonts, Flags: 0x00000000, TexSize: 512,64
io.DisplaySize: 1280.00,720.00
io.DisplayFramebufferScale: 1.00,1.00
--------------------------------
style.WindowPadding: 8.00,8.00
style.WindowBorderSize: 1.00
style.FramePadding: 4.00,3.00
style.FrameRounding: 0.00
style.FrameBorderSize: 0.00
style.ItemSpacing: 8.00,4.00
style.ItemInnerSpacing: 4.00,4.00

Details:

When dragging a window either outside or inside the main screen boundary, it drops, necessitating a double-click to resume dragging.

Screenshots/Video:

No response

Minimal, Complete and Verifiable Example code:

ImGui::Begin("Test");
ImGui::Text("Hello World");
ImGui::End();

@Rakshitx1
Copy link
Author

I forgot to mention, but I am using CMake to compile imgui to a library and then using it

are there any plans to add official CMake support for imgui?

@ocornut ocornut changed the title Dropping Window Dragging secondary viewports out of main viewport Jun 24, 2024
@ocornut
Copy link
Owner

ocornut commented Jun 24, 2024

Which version of GLFW are you using?

Currently the GLFW backend under systems other than Windows seems to be calling a different codepath, where it is possible that a combination of what GLFW does and what the WM does means you lose mouse inputs while dragging.

Please confirm GLFW version and open Tools->Debug Log->IO and capture IO log at the time of extracting a window into its own viewport.

With GLFW 3.3 we normally call:

    glfwWindowHint(GLFW_FOCUS_ON_SHOW, false);

https://github.com/ocornut/imgui/blob/docking/backends/imgui_impl_glfw.cpp#L122C9-L122C41

And there's a workaround for older versions but it's Windows only:
https://github.com/ocornut/imgui/blob/docking/backends/imgui_impl_glfw.cpp#L1128

@Rakshitx1
Copy link
Author

Rakshitx1 commented Jun 24, 2024

I am using GLFW 3.5, I did notice imgui came with GLFW 3.3

[04951] [io] Processed: MouseButton 0 Up (Mouse)
[04951] SetActiveID() old:0xB89D6EE5 (window "Dear ImGui Debug Log") -> new:0x00000000 (window "")
[04952] [dragdrop] ClearDragDrop()
[04952] [viewport] Destroy Platform Window 8E350B18 'Dear ImGui Debug Log'
[04953] [viewport] Focused viewport changed 8E350B18 -> 11111111, attempting to apply our focus.
[04953] [viewport] Delete Viewport 8E350B18 'Dear ImGui Debug Log'
[04954] [io] Processed: AppFocused 0
[04954] [io] Processed: AppFocused 1

It seems to be destroying old window and creating a new window?

i forked on this commit: 7237d3e

video: https://media.discordapp.net/attachments/844849219504046154/1254947933447651348/imgui.webm?ex=667b58d7&is=667a0757&hm=d9aec2d766ce8380f9791afa297f3189d3c6db95eadbbe12ae3b37b8d9ec3b13&

@ocornut
Copy link
Owner

ocornut commented Jun 26, 2024

The video link is invalid.
I guess the question is to understand why you are getting the MouseButton 0 up event there.

At this point frankly I am considering to stop supporting multi-viewport under Linux since it's so complicated under this OS and we don't have any serious/focused contributor using Linux.

@JamesWrigley
Copy link

I think this is a duplicate of #3158, which links to an upstream issue in GLFW: glfw/glfw#1562
With a potential fix here: rokups@c510c11

Is that fix mergeable? I also see this on ImGui 1.90.8 under Linux/X11, so I'm happy to test things or work on improving that patch if you'd prefer a different fix. Multi-viewport support on Linux is critical for my usecase so I'm quite motivated to help out where I can :)

(though this particular bug doesn't personally bother me much)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants