mirror of
https://github.com/ocornut/imgui.git
synced 2024-11-28 01:20:55 +01:00
Merge branch 'master' into navigation
# Conflicts: # imgui.cpp # imgui.h
This commit is contained in:
commit
c4e6d622c1
@ -45,7 +45,7 @@ Binaries/Demo
|
|||||||
-------------
|
-------------
|
||||||
|
|
||||||
You should be able to build the examples from sources (tested on Windows/Mac/Linux). If you don't, let me know! If you want to have a quick look at some Dear ImGui features, you can download Windows binaries of the demo app here:
|
You should be able to build the examples from sources (tested on Windows/Mac/Linux). If you don't, let me know! If you want to have a quick look at some Dear ImGui features, you can download Windows binaries of the demo app here:
|
||||||
- [imgui-demo-binaries-20171013.zip](http://www.miracleworld.net/imgui/binaries/imgui-demo-binaries-20171013.zip) (Windows binaries, Dear ImGui 1.52 WIP built 2017/10/13, 5 executables)
|
- [imgui-demo-binaries-20171226.zip](http://www.miracleworld.net/imgui/binaries/imgui-demo-binaries-20171226.zip) (Windows binaries, Dear ImGui 1.53 built 2017/12/26, 5 executables)
|
||||||
|
|
||||||
Bindings
|
Bindings
|
||||||
--------
|
--------
|
||||||
@ -60,6 +60,7 @@ Languages:
|
|||||||
- ChaiScript: https://github.com/JuJuBoSc/imgui-chaiscript
|
- ChaiScript: https://github.com/JuJuBoSc/imgui-chaiscript
|
||||||
- D (DerelictImgui): https://github.com/Extrawurst/DerelictImgui
|
- D (DerelictImgui): https://github.com/Extrawurst/DerelictImgui
|
||||||
- Go (go-imgui): https://github.com/Armored-Dragon/go-imgui
|
- Go (go-imgui): https://github.com/Armored-Dragon/go-imgui
|
||||||
|
- Haxe/hxcpp (linc_imgui): https://github.com/Aidan63/linc_imgui
|
||||||
- Lua: https://github.com/patrickriordan/imgui_lua_bindings
|
- Lua: https://github.com/patrickriordan/imgui_lua_bindings
|
||||||
- Odin: https://github.com/ThisDrunkDane/odin-dear_imgui
|
- Odin: https://github.com/ThisDrunkDane/odin-dear_imgui
|
||||||
- Pascal (imgui-pas): https://github.com/dpethes/imgui-pas
|
- Pascal (imgui-pas): https://github.com/dpethes/imgui-pas
|
||||||
|
41
imgui.cpp
41
imgui.cpp
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.53
|
// dear imgui, v1.54 WIP
|
||||||
// (main code and documentation)
|
// (main code and documentation)
|
||||||
|
|
||||||
// ** EXPERIMENTAL GAMEPAD/KEYBOARD NAVIGATION BRANCH
|
// ** EXPERIMENTAL GAMEPAD/KEYBOARD NAVIGATION BRANCH
|
||||||
@ -3721,7 +3721,7 @@ void ImGui::EndFrame()
|
|||||||
IM_ASSERT(g.CurrentWindowStack.Size == 1); // Mismatched Begin()/End() calls
|
IM_ASSERT(g.CurrentWindowStack.Size == 1); // Mismatched Begin()/End() calls
|
||||||
if (g.CurrentWindow && !g.CurrentWindow->WriteAccessed)
|
if (g.CurrentWindow && !g.CurrentWindow->WriteAccessed)
|
||||||
g.CurrentWindow->Active = false;
|
g.CurrentWindow->Active = false;
|
||||||
ImGui::End();
|
End();
|
||||||
|
|
||||||
if (g.ActiveId == 0 && g.HoveredId == 0)
|
if (g.ActiveId == 0 && g.HoveredId == 0)
|
||||||
{
|
{
|
||||||
@ -4579,7 +4579,7 @@ void ImGui::BeginTooltip()
|
|||||||
void ImGui::EndTooltip()
|
void ImGui::EndTooltip()
|
||||||
{
|
{
|
||||||
IM_ASSERT(GetCurrentWindowRead()->Flags & ImGuiWindowFlags_Tooltip); // Mismatched BeginTooltip()/EndTooltip() calls
|
IM_ASSERT(GetCurrentWindowRead()->Flags & ImGuiWindowFlags_Tooltip); // Mismatched BeginTooltip()/EndTooltip() calls
|
||||||
ImGui::End();
|
End();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mark popup as open (toggle toward open state).
|
// Mark popup as open (toggle toward open state).
|
||||||
@ -4751,7 +4751,7 @@ bool ImGui::BeginPopupModal(const char* name, bool* p_open, ImGuiWindowFlags ext
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Center modal windows by default
|
// Center modal windows by default
|
||||||
if ((window->SetWindowPosAllowFlags & g.SetNextWindowPosCond) == 0)
|
if (g.SetNextWindowPosCond == 0)
|
||||||
SetNextWindowPos(g.IO.DisplaySize * 0.5f, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
|
SetNextWindowPos(g.IO.DisplaySize * 0.5f, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f));
|
||||||
|
|
||||||
ImGuiWindowFlags flags = extra_flags|ImGuiWindowFlags_Popup|ImGuiWindowFlags_Modal|ImGuiWindowFlags_NoCollapse|ImGuiWindowFlags_NoSavedSettings;
|
ImGuiWindowFlags flags = extra_flags|ImGuiWindowFlags_Popup|ImGuiWindowFlags_Modal|ImGuiWindowFlags_NoCollapse|ImGuiWindowFlags_NoSavedSettings;
|
||||||
@ -4903,7 +4903,7 @@ void ImGui::EndChild()
|
|||||||
IM_ASSERT(window->Flags & ImGuiWindowFlags_ChildWindow); // Mismatched BeginChild()/EndChild() callss
|
IM_ASSERT(window->Flags & ImGuiWindowFlags_ChildWindow); // Mismatched BeginChild()/EndChild() callss
|
||||||
if (window->BeginCount > 1)
|
if (window->BeginCount > 1)
|
||||||
{
|
{
|
||||||
ImGui::End();
|
End();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -4913,7 +4913,7 @@ void ImGui::EndChild()
|
|||||||
sz.x = ImMax(4.0f, sz.x);
|
sz.x = ImMax(4.0f, sz.x);
|
||||||
if (window->AutoFitChildAxises & (1 << ImGuiAxis_Y))
|
if (window->AutoFitChildAxises & (1 << ImGuiAxis_Y))
|
||||||
sz.y = ImMax(4.0f, sz.y);
|
sz.y = ImMax(4.0f, sz.y);
|
||||||
ImGui::End();
|
End();
|
||||||
|
|
||||||
ImGuiWindow* parent_window = GetCurrentWindow();
|
ImGuiWindow* parent_window = GetCurrentWindow();
|
||||||
ImRect bb(parent_window->DC.CursorPos, parent_window->DC.CursorPos + sz);
|
ImRect bb(parent_window->DC.CursorPos, parent_window->DC.CursorPos + sz);
|
||||||
@ -7743,7 +7743,8 @@ bool ImGui::TreeNodeBehavior(ImGuiID id, ImGuiTreeNodeFlags flags, const char* l
|
|||||||
// - OpenOnArrow .................... single-click on arrow to open
|
// - OpenOnArrow .................... single-click on arrow to open
|
||||||
// - OpenOnDoubleClick|OpenOnArrow .. single-click on arrow or double-click anywhere to open
|
// - OpenOnDoubleClick|OpenOnArrow .. single-click on arrow or double-click anywhere to open
|
||||||
ImGuiButtonFlags button_flags = ImGuiButtonFlags_NoKeyModifiers | ((flags & ImGuiTreeNodeFlags_AllowItemOverlap) ? ImGuiButtonFlags_AllowItemOverlap : 0);
|
ImGuiButtonFlags button_flags = ImGuiButtonFlags_NoKeyModifiers | ((flags & ImGuiTreeNodeFlags_AllowItemOverlap) ? ImGuiButtonFlags_AllowItemOverlap : 0);
|
||||||
button_flags |= ImGuiButtonFlags_PressedOnDragDropHold;
|
if (!(flags & ImGuiTreeNodeFlags_Leaf))
|
||||||
|
button_flags |= ImGuiButtonFlags_PressedOnDragDropHold;
|
||||||
if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
if (flags & ImGuiTreeNodeFlags_OpenOnDoubleClick)
|
||||||
button_flags |= ImGuiButtonFlags_PressedOnDoubleClick | ((flags & ImGuiTreeNodeFlags_OpenOnArrow) ? ImGuiButtonFlags_PressedOnClickRelease : 0);
|
button_flags |= ImGuiButtonFlags_PressedOnDoubleClick | ((flags & ImGuiTreeNodeFlags_OpenOnArrow) ? ImGuiButtonFlags_PressedOnClickRelease : 0);
|
||||||
|
|
||||||
@ -10337,14 +10338,15 @@ bool ImGui::BeginCombo(const char* label, const char* preview_value, ImGuiComboF
|
|||||||
|
|
||||||
// Peak into expected window size so we can position it
|
// Peak into expected window size so we can position it
|
||||||
if (ImGuiWindow* popup_window = FindWindowByName(name))
|
if (ImGuiWindow* popup_window = FindWindowByName(name))
|
||||||
{
|
if (popup_window->WasActive)
|
||||||
ImVec2 size_contents = CalcSizeContents(popup_window);
|
{
|
||||||
ImVec2 size_expected = CalcSizeAfterConstraint(popup_window, CalcSizeAutoFit(popup_window, size_contents));
|
ImVec2 size_contents = CalcSizeContents(popup_window);
|
||||||
if (flags & ImGuiComboFlags_PopupAlignLeft)
|
ImVec2 size_expected = CalcSizeAfterConstraint(popup_window, CalcSizeAutoFit(popup_window, size_contents));
|
||||||
popup_window->AutoPosLastDirection = ImGuiDir_Left;
|
if (flags & ImGuiComboFlags_PopupAlignLeft)
|
||||||
ImVec2 pos = FindBestWindowPosForPopup(frame_bb.GetBL(), size_expected, &popup_window->AutoPosLastDirection, frame_bb, ImGuiPopupPositionPolicy_ComboBox);
|
popup_window->AutoPosLastDirection = ImGuiDir_Left;
|
||||||
SetNextWindowPos(pos);
|
ImVec2 pos = FindBestWindowPosForPopup(frame_bb.GetBL(), size_expected, &popup_window->AutoPosLastDirection, frame_bb, ImGuiPopupPositionPolicy_ComboBox);
|
||||||
}
|
SetNextWindowPos(pos);
|
||||||
|
}
|
||||||
|
|
||||||
ImGuiWindowFlags window_flags = ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_Popup | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings;
|
ImGuiWindowFlags window_flags = ImGuiWindowFlags_AlwaysAutoResize | ImGuiWindowFlags_Popup | ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoSavedSettings;
|
||||||
if (!Begin(name, NULL, window_flags))
|
if (!Begin(name, NULL, window_flags))
|
||||||
@ -10755,7 +10757,7 @@ bool ImGui::BeginMenuBar()
|
|||||||
// We remove 1 worth of rounding to Max.x to that text in long menus don't tend to display over the lower-right rounded area, which looks particularly glitchy.
|
// We remove 1 worth of rounding to Max.x to that text in long menus don't tend to display over the lower-right rounded area, which looks particularly glitchy.
|
||||||
ImRect bar_rect = window->MenuBarRect();
|
ImRect bar_rect = window->MenuBarRect();
|
||||||
ImRect clip_rect(ImFloor(bar_rect.Min.x + 0.5f), ImFloor(bar_rect.Min.y + window->WindowBorderSize + 0.5f), ImFloor(ImMax(bar_rect.Min.x, bar_rect.Max.x - window->WindowRounding) + 0.5f), ImFloor(bar_rect.Max.y + 0.5f));
|
ImRect clip_rect(ImFloor(bar_rect.Min.x + 0.5f), ImFloor(bar_rect.Min.y + window->WindowBorderSize + 0.5f), ImFloor(ImMax(bar_rect.Min.x, bar_rect.Max.x - window->WindowRounding) + 0.5f), ImFloor(bar_rect.Max.y + 0.5f));
|
||||||
clip_rect.ClipWith(window->Rect());
|
clip_rect.ClipWith(window->WindowRectClipped);
|
||||||
PushClipRect(clip_rect.Min, clip_rect.Max, false);
|
PushClipRect(clip_rect.Min, clip_rect.Max, false);
|
||||||
|
|
||||||
window->DC.CursorPos = ImVec2(bar_rect.Min.x + window->DC.MenuBarOffsetX, bar_rect.Min.y);// + g.Style.FramePadding.y);
|
window->DC.CursorPos = ImVec2(bar_rect.Min.x + window->DC.MenuBarOffsetX, bar_rect.Min.y);// + g.Style.FramePadding.y);
|
||||||
@ -12653,6 +12655,12 @@ void ImGui::EndDragDropTarget()
|
|||||||
IM_ASSERT(g.DragDropActive);
|
IM_ASSERT(g.DragDropActive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ImGui::IsDragDropActive()
|
||||||
|
{
|
||||||
|
ImGuiContext& g = *GImGui;
|
||||||
|
return g.DragDropActive;
|
||||||
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// PLATFORM DEPENDENT HELPERS
|
// PLATFORM DEPENDENT HELPERS
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@ -12905,6 +12913,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|||||||
ImGui::Text("NavUsable: %d, NavActive: %d", g.IO.NavUsable, g.IO.NavActive);
|
ImGui::Text("NavUsable: %d, NavActive: %d", g.IO.NavUsable, g.IO.NavActive);
|
||||||
ImGui::Text("NavActivateId: 0x%08X, NavInputId: 0x%08X", g.NavActivateId, g.NavInputId);
|
ImGui::Text("NavActivateId: 0x%08X, NavInputId: 0x%08X", g.NavActivateId, g.NavInputId);
|
||||||
ImGui::Text("NavDisableHighlight: %d, NavDisableMouseHover: %d", g.NavDisableHighlight, g.NavDisableMouseHover);
|
ImGui::Text("NavDisableHighlight: %d, NavDisableMouseHover: %d", g.NavDisableHighlight, g.NavDisableMouseHover);
|
||||||
|
ImGui::Text("DragDrop: %d, SourceId = 0x%08X, Payload \"%s\" (%d bytes)", g.DragDropActive, g.DragDropPayload.SourceId, g.DragDropPayload.DataType, g.DragDropPayload.DataSize);
|
||||||
ImGui::TreePop();
|
ImGui::TreePop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
5
imgui.h
5
imgui.h
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.53
|
// dear imgui, v1.54 WIP
|
||||||
// (headers)
|
// (headers)
|
||||||
|
|
||||||
// See imgui.cpp file for documentation.
|
// See imgui.cpp file for documentation.
|
||||||
@ -16,7 +16,7 @@
|
|||||||
#include <stddef.h> // ptrdiff_t, NULL
|
#include <stddef.h> // ptrdiff_t, NULL
|
||||||
#include <string.h> // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp
|
#include <string.h> // memset, memmove, memcpy, strlen, strchr, strcpy, strcmp
|
||||||
|
|
||||||
#define IMGUI_VERSION "1.53"
|
#define IMGUI_VERSION "1.54 WIP"
|
||||||
#define IMGUI_HAS_NAV // navigation branch
|
#define IMGUI_HAS_NAV // navigation branch
|
||||||
|
|
||||||
// Define attributes of all API symbols declarations, e.g. for DLL under Windows.
|
// Define attributes of all API symbols declarations, e.g. for DLL under Windows.
|
||||||
@ -436,6 +436,7 @@ namespace ImGui
|
|||||||
IMGUI_API bool BeginDragDropTarget(); // call after submitting an item that may receive an item. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget()
|
IMGUI_API bool BeginDragDropTarget(); // call after submitting an item that may receive an item. If this returns true, you can call AcceptDragDropPayload() + EndDragDropTarget()
|
||||||
IMGUI_API const ImGuiPayload* AcceptDragDropPayload(const char* type, ImGuiDragDropFlags flags = 0); // accept contents of a given type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released.
|
IMGUI_API const ImGuiPayload* AcceptDragDropPayload(const char* type, ImGuiDragDropFlags flags = 0); // accept contents of a given type. If ImGuiDragDropFlags_AcceptBeforeDelivery is set you can peek into the payload before the mouse button is released.
|
||||||
IMGUI_API void EndDragDropTarget();
|
IMGUI_API void EndDragDropTarget();
|
||||||
|
IMGUI_API bool IsDragDropActive();
|
||||||
|
|
||||||
// Clipping
|
// Clipping
|
||||||
IMGUI_API void PushClipRect(const ImVec2& clip_rect_min, const ImVec2& clip_rect_max, bool intersect_with_current_clip_rect);
|
IMGUI_API void PushClipRect(const ImVec2& clip_rect_min, const ImVec2& clip_rect_max, bool intersect_with_current_clip_rect);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.53
|
// dear imgui, v1.54 WIP
|
||||||
// (demo code)
|
// (demo code)
|
||||||
|
|
||||||
// Message to the person tempted to delete this file when integrating ImGui into their code base:
|
// Message to the person tempted to delete this file when integrating ImGui into their code base:
|
||||||
@ -2403,6 +2403,7 @@ static void ShowExampleAppFixedOverlay(bool* p_open)
|
|||||||
if (ImGui::MenuItem("Top-right", NULL, corner == 1)) corner = 1;
|
if (ImGui::MenuItem("Top-right", NULL, corner == 1)) corner = 1;
|
||||||
if (ImGui::MenuItem("Bottom-left", NULL, corner == 2)) corner = 2;
|
if (ImGui::MenuItem("Bottom-left", NULL, corner == 2)) corner = 2;
|
||||||
if (ImGui::MenuItem("Bottom-right", NULL, corner == 3)) corner = 3;
|
if (ImGui::MenuItem("Bottom-right", NULL, corner == 3)) corner = 3;
|
||||||
|
if (p_open && ImGui::MenuItem("Close")) *p_open = false;
|
||||||
ImGui::EndPopup();
|
ImGui::EndPopup();
|
||||||
}
|
}
|
||||||
ImGui::End();
|
ImGui::End();
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.53
|
// dear imgui, v1.54 WIP
|
||||||
// (drawing and font code)
|
// (drawing and font code)
|
||||||
|
|
||||||
// Contains implementation for
|
// Contains implementation for
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// dear imgui, v1.53
|
// dear imgui, v1.54 WIP
|
||||||
// (internals)
|
// (internals)
|
||||||
|
|
||||||
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
|
// You may use this file to debug, understand or extend ImGui features but we don't provide any guarantee of forward compatibility!
|
||||||
|
Loading…
Reference in New Issue
Block a user