232 Commits

Author SHA1 Message Date
ocornut
c99ac2451f Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_vulkan.cpp
2025-07-08 17:25:22 +02:00
Pascal Thomet
18dca11dd0 Backends: GLFW, SDL2: ImplXXX_GetContentScaleXXX() helpers return 1.0f on emscripten / apple / android (#8742, #8733)
We can divide platforms into two cases based on how they report screen geometry:
- Case 1: Platforms which report screen size in "physical pixels": Windows (for "Dpi aware" apps), Linux (with Wayland)
- Case 2: Platforms which report screen size in "density-independent pixels": macOS, iOS, Android, emscripten

As a consequence, there are two important things we need to know:
- FramebufferScale: The scaling factor FrameBufferSize / ScreenSize
  - In case 1, the framebuffer size is equal to the screen size and DisplayFramebufferScale=1.
  - In case 2, the framebuffer size is equal to the screen size multiplied by a factor, for example DisplayFramebufferScale=2.
- ContentScale The scaling factor for the content that we will display
  - In case 1, the content scale will often need to be > 1 (e.g., 2), because we will need to display bigger elements so that they show with a correct physical size on the screen.
  - In case 2, the content scale is equal to 1
This commit fixes ContentScale for platforms in case 2.
2025-07-08 15:53:42 +02:00
ocornut
efe2b21a5f Backends: GLFW: Fixed not installing WndProc hook in all GLFW version, so AddMouseSourceEvent() logic was missing for some viewports. 2025-06-21 20:10:18 +02:00
ocornut
e132b444a9 Backends: GLFW: Fixed crash when using GLFW 3.3 (#8713, #8676, #8239, #8069)
Amend 2a8c75f
2025-06-21 20:04:42 +02:00
ocornut
4fde473f38 Backends: warning fixes (for docking branch). 2025-06-20 15:24:52 +02:00
ocornut
b580c11303 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_sdl2.cpp
2025-06-20 15:19:36 +02:00
ocornut
e97e55adbc Backends: Fixed various warnings discovered when using MinGW GCC 15/Clang on latest backends.
dx12: 'ImGui_ImplDX12_Data* bd' shadowed local in spite of being in lambda.
2025-06-20 15:18:00 +02:00
ocornut
9a50c09172 Bsckends: SDL2, GLFW: fixed ImGui_ImplXXXX_GetContentScaleXXX functions never using SDL 2.0.4 & GLFW 3.3 path in master.
Amend 9da3e6696a, 8269924c (was broken for master)
2025-06-20 14:38:33 +02:00
ocornut
2a8c75f3e6 Backends: GLFW: amend for multi-context support with multi-viewport. (#8676, #8239, #8069) 2025-06-18 17:01:49 +02:00
ocornut
c2c38beec8 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_glfw.h
2025-06-18 16:55:20 +02:00
ocornut
f633a60581 Backends: GLFW: Added support for multiple Dear ImGui contexts. (#8676, #8239, #8069) 2025-06-18 16:46:37 +02:00
ocornut
d290e583c5 Backends: GLFW: fixed WndProc relying on current context. (#8676, #8239, #8069)
This makes the backend closer to support multi-context.
2025-06-18 16:39:57 +02:00
ocornut
65857236c7 Backends: GLFW, SDL2, SDL3, update for docking to use helpers. 2025-06-11 18:07:43 +02:00
ocornut
6af6cec23f Merge branch 'master_fonts' into docking
# Conflicts:
#	backends/imgui_impl_dx10.cpp
#	backends/imgui_impl_dx10.h
#	backends/imgui_impl_dx11.cpp
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_dx9.cpp
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_metal.h
#	backends/imgui_impl_metal.mm
#	backends/imgui_impl_opengl2.cpp
#	backends/imgui_impl_opengl2.h
#	backends/imgui_impl_opengl3.cpp
#	backends/imgui_impl_opengl3.h
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
#	backends/imgui_impl_sdlgpu3.cpp
#	backends/imgui_impl_sdlgpu3.h
#	backends/imgui_impl_vulkan.cpp
#	examples/example_glfw_opengl3/main.cpp
#	examples/example_sdl2_directx11/main.cpp
#	examples/example_sdl2_opengl2/main.cpp
#	examples/example_sdl2_opengl3/main.cpp
#	examples/example_sdl2_vulkan/main.cpp
#	examples/example_sdl3_opengl3/main.cpp
#	examples/example_sdl3_sdlgpu3/main.cpp
#	examples/example_sdl3_vulkan/main.cpp
#	examples/example_win32_directx10/main.cpp
#	examples/example_win32_directx11/main.cpp
#	examples/example_win32_directx12/main.cpp
#	examples/example_win32_directx9/main.cpp
#	imgui.cpp
#	imgui.h
#	imgui_demo.cpp
#	imgui_internal.h
2025-06-11 18:07:19 +02:00
ocornut
b98e92839c Backends: SDL2, SDL3, GLFW: Backport small part of c90ea13 from docking. 2025-06-11 16:24:04 +02:00
ocornut
8269924c33 Backends: GLFW: added ImGui_ImplGlfw_GetContentScaleForMonitor(), ImGui_ImplGlfw_GetContentScaleForWindow() helpers.
# Conflicts:
#	backends/imgui_impl_glfw.cpp
2025-06-11 16:13:49 +02:00
ocornut
c008c7d494 Merge remote-tracking branch 'origin/master' into docking
# Conflicts:
#	backends/imgui_impl_dx10.cpp
#	backends/imgui_impl_dx11.cpp
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
2025-05-15 14:45:15 +02:00
ocornut
c90ea1315a Viewports: added per-viewport FramebufferScale, Platform_GetWindowFramebufferScale() + Backends: GLFW, SDL2, SDL3, Apple: added support. (#1065, #1542, #1676, #1786, #2826, #3757, #5081, #5580, #5592, #6465, #7273, #7779 etc.)
)

Metal backend is not in charge of writing to DpiScale/FramebufferScale (tho it was a neat workaround).
2025-05-15 14:43:30 +02:00
ocornut
08689c51a9 Backends: GLFW, SDL2, SDL3: include GLFW/SDL version number in io.BackendPlatformName.
# Conflicts:
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
2025-05-13 15:50:51 +02:00
ocornut
fcdaa32793 Backends: GLFW: Disable multi-viewports under Wayland. (#8587) 2025-04-26 14:54:09 +02:00
ocornut
df5690d91a Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_osx.mm
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
#	imgui.cpp
2025-03-30 16:42:28 +02:00
ocornut
979c7d76ab Backends: SDL2, SDL3, OSX: Fill gamepad inputs and set ImGuiBackendFlags_HasGamepad regardless of ImGuiConfigFlags_NavEnableGamepad being set. (#8508) 2025-03-21 15:42:47 +01:00
ocornut
79bba34c5f Revert "Added ImGuiKey_AbntC1, ImGuiKey_AbntC2 + Backends: GLFW, Win32: added support. (#8468)"
This reverts commit 557c77e455.
2025-03-13 16:32:50 +01:00
ocornut
557c77e455 Added ImGuiKey_AbntC1, ImGuiKey_AbntC2 + Backends: GLFW, Win32: added support. (#8468) 2025-03-11 18:38:45 +01:00
ocornut
6972b6c380 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
#	backends/imgui_impl_win32.cpp
2025-03-10 20:02:36 +01:00
ocornut
a9e53829d2 Backends: Win32, SDL2, SDL3, GLFW: prioritize scancodes instead of translated keycodes when dealing with OEM keys + Added ImGuiKey_Oem102. (#7136, #7201, #7206, #7306, #7670, #7672, #8468) 2025-03-10 18:01:29 +01:00
ocornut
935938bbd9 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
2025-03-03 18:57:42 +01:00
ocornut
ce13f6b73e Backends: GLFW: Fixed clipboard handler assertion when using GLFW <= 3.2.1 compiled with asserts enabled. (#8452)
Amend 8e4010479
2025-03-03 13:11:16 +01:00
ocornut
9ab0b66f50 Backends: fixed comment to state that ImGuiViewport::PlaformHandle is used to store SDL's WindowID, not SDL_Window*. (#7853)
Amend 2d99052
2025-02-25 15:55:54 +01:00
ocornut
773060155f Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_glfw.h
#	backends/imgui_impl_opengl3.cpp
#	backends/imgui_impl_osx.h
#	backends/imgui_impl_osx.mm
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
#	backends/imgui_impl_win32.cpp
#	imgui.cpp
2025-02-21 19:56:20 +01:00
ocornut
1a7b5945c7 Backends: GLFW/SDL2/SDL3: Update monitors and work areas information every frame, as the later may change regardless of monitor changes. (#8415) 2025-02-21 19:23:39 +01:00
ocornut
eec097fe35 Added ImGuiMouseCursor_Progress mouse cursor 8a35386+ support in SDL2,SDL3,Win32,Allegro5 backends.
Amend 8a35386
2025-02-18 18:52:08 +01:00
ocornut
8a35386ba7 Added ImGuiMouseCursor_Wait mouse cursor (busy/wait/hourglass shape) + support in SDL2,SDL3,Win32,Allegro5 backends. 2025-02-18 18:40:47 +01:00
ocornut
8679cfa2d8 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_glfw.h
#	examples/example_apple_metal/example_apple_metal.xcodeproj/project.pbxproj
#	imgui.cpp
2025-02-07 18:27:32 +01:00
fdsa
4f1d3809c3 Fixed tabs and spaces (#8377) 2025-02-06 19:54:43 +01:00
ocornut
2d20e13746 Backends: GLFW: Added comment about io.AddMouseSourceEvent() not being properly called. (#8374) 2025-02-04 20:19:57 +01:00
ocornut
960a6f14bf Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_dx10.cpp
#	backends/imgui_impl_dx11.cpp
#	backends/imgui_impl_metal.mm
#	imgui.cpp
2025-01-08 14:36:14 +01:00
Arash Partow
63649e0359 Avoid clang/gcc warnings: -Wnontrivial-memaccess. (#8295) 2025-01-08 11:40:59 +01:00
ocornut
a9cd0f5e42 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_allegro5.cpp
#	backends/imgui_impl_allegro5.h
#	backends/imgui_impl_android.cpp
#	backends/imgui_impl_android.h
#	backends/imgui_impl_dx10.cpp
#	backends/imgui_impl_dx10.h
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_dx9.cpp
#	backends/imgui_impl_dx9.h
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_glfw.h
#	backends/imgui_impl_metal.h
#	backends/imgui_impl_metal.mm
#	backends/imgui_impl_opengl2.cpp
#	backends/imgui_impl_opengl2.h
#	backends/imgui_impl_opengl3.cpp
#	backends/imgui_impl_opengl3.h
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl2.h
#	backends/imgui_impl_sdl3.cpp
#	backends/imgui_impl_sdl3.h
#	backends/imgui_impl_vulkan.cpp
#	backends/imgui_impl_vulkan.h
#	backends/imgui_impl_win32.cpp
#	backends/imgui_impl_win32.h
#	imgui.cpp
2024-12-11 12:27:25 +01:00
ocornut
43fbd7ce84 Backends: standardized top of file comments. 2024-12-05 12:43:04 +01:00
ocornut
566558b17c Replacing NULL with nullptr in examples/backends when they creeped back. (#6313, #7071, #4537) 2024-12-05 12:25:02 +01:00
ocornut
83660e37e3 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_glut.cpp
#	backends/imgui_impl_glut.h
#	backends/imgui_impl_metal.mm
#	imgui.cpp
#	imgui_demo.cpp
2024-11-06 17:58:35 +01:00
ocornut
6f287dd16d (Breaking) Removed pre-1.87 obsolete io.KeyMap[], io.KeysDown[], io.NavInputs[]. Remove IMGUI_DISABLE_OBSOLETE_KEYIO. (#4921) 2024-11-06 17:54:59 +01:00
ocornut
c347d6944b Backends: GLFW: Linux workaround for spurious mouse up events emitted while dragging and creating new viewport. (#3158, #7733, #7922)
Initially suggested by rokups. Rewrote for recent backends with a few tweaks to accomodate for variable WM unfocus timing.
2024-11-05 11:26:38 +01:00
ocornut
942b64abfc Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_sdl2.cpp
#	backends/imgui_impl_sdl3.cpp
2024-10-24 18:15:51 +02:00
ocornut
a908d73c16 Backends: avoid missing -Wmissing-declaration warning. (#8087, #7997) 2024-10-24 17:24:47 +02:00
ocornut
514a97a9b7 Merge branch 'master' into docking
# Conflicts:
#	backends/imgui_impl_dx11.cpp
#	backends/imgui_impl_dx11.h
#	backends/imgui_impl_dx12.cpp
#	backends/imgui_impl_dx12.h
#	backends/imgui_impl_glfw.cpp
#	backends/imgui_impl_sdlrenderer2.cpp
#	backends/imgui_impl_sdlrenderer2.h
#	backends/imgui_impl_sdlrenderer3.cpp
#	backends/imgui_impl_sdlrenderer3.h
#	backends/imgui_impl_vulkan.cpp
#	backends/imgui_impl_vulkan.h
#	backends/imgui_impl_wgpu.cpp
#	backends/imgui_impl_wgpu.h
#	backends/imgui_impl_win32.cpp
#	imgui.cpp
#	imgui_demo.cpp
2024-10-14 19:23:23 +02:00
ocornut
d885fe4dd0 (Breaking) moved ImGuiConfigFlags_NavEnableSetMousePos -> io.ConfigNavMoveSetMousePos, ImGuiConfigFlags_NavNoCaptureKeyboard -> ConfigNavCaptureKeyboard. (#2517, #2009) 2024-10-14 15:29:24 +02:00
ocornut
22503bfe75 Backends: changed all backends to allow enabling ImGuiConfigFlags_ViewportsEnable after initialization. (#5371) 2024-10-08 20:47:24 +02:00
ocornut
bc77cccd31 Merge branch 'master' into docking 2024-09-19 14:52:43 +02:00