mirror of
https://github.com/Mauler125/r5sdk.git
synced 2025-02-09 19:15:03 +01:00
ImGui: add flag to draw scrollbars over content
Custom flags: basically tells ImGui to draw the scrollbar as an overlay. This is useful for working around feedback loops caused by the appearance of the scrollbars (might be worth PR'ing into ImGui itself?) See: ocornut/imgui#1720 ocornut/imgui#1730 ocornut/imgui#2978
This commit is contained in:
parent
65eaade807
commit
07ca7e1231
8
r5dev/thirdparty/imgui/imgui.cpp
vendored
8
r5dev/thirdparty/imgui/imgui.cpp
vendored
@ -6794,14 +6794,16 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags, void*
|
||||
float size_y_for_scrollbars = use_current_size_for_scrollbar_y ? avail_size_from_current_frame.y : avail_size_from_last_frame.y;
|
||||
//bool scrollbar_y_from_last_frame = window->ScrollbarY; // FIXME: May want to use that in the ScrollbarX expression? How many pros vs cons?
|
||||
window->ScrollbarY = (flags & ImGuiWindowFlags_AlwaysVerticalScrollbar) || ((needed_size_from_last_frame.y > size_y_for_scrollbars) && !(flags & ImGuiWindowFlags_NoScrollbar));
|
||||
window->ScrollbarX = (flags & ImGuiWindowFlags_AlwaysHorizontalScrollbar) || ((needed_size_from_last_frame.x > size_x_for_scrollbars - (window->ScrollbarY ? style.ScrollbarSize : 0.0f)) && !(flags & ImGuiWindowFlags_NoScrollbar) && (flags & ImGuiWindowFlags_HorizontalScrollbar));
|
||||
window->ScrollbarX = (flags & ImGuiWindowFlags_AlwaysHorizontalScrollbar) || ((needed_size_from_last_frame.x > size_x_for_scrollbars - ((window->ScrollbarY && !(flags & ImGuiWindowFlags_OverlayHorizontalScrollbar)) ? style.ScrollbarSize : 0.0f)) && !(flags & ImGuiWindowFlags_NoScrollbar) && (flags & ImGuiWindowFlags_HorizontalScrollbar));
|
||||
if (window->ScrollbarX && !window->ScrollbarY)
|
||||
window->ScrollbarY = (needed_size_from_last_frame.y > size_y_for_scrollbars) && !(flags & ImGuiWindowFlags_NoScrollbar);
|
||||
window->ScrollbarSizes = ImVec2(window->ScrollbarY ? style.ScrollbarSize : 0.0f, window->ScrollbarX ? style.ScrollbarSize : 0.0f);
|
||||
|
||||
// Amend the partially filled window->DecorationXXX values.
|
||||
window->DecoOuterSizeX2 += window->ScrollbarSizes.x;
|
||||
window->DecoOuterSizeY2 += window->ScrollbarSizes.y;
|
||||
if (!(flags & ImGuiWindowFlags_OverlayVerticalScrollbar))
|
||||
window->DecoOuterSizeX2 += window->ScrollbarSizes.x;
|
||||
if (!(flags & ImGuiWindowFlags_OverlayHorizontalScrollbar))
|
||||
window->DecoOuterSizeY2 += window->ScrollbarSizes.y;
|
||||
}
|
||||
|
||||
// UPDATE RECTANGLES (1- THOSE NOT AFFECTED BY SCROLLING)
|
||||
|
3
r5dev/thirdparty/imgui/imgui.h
vendored
3
r5dev/thirdparty/imgui/imgui.h
vendored
@ -1016,6 +1016,9 @@ enum ImGuiWindowFlags_
|
||||
ImGuiWindowFlags_NoDecoration = ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoCollapse,
|
||||
ImGuiWindowFlags_NoInputs = ImGuiWindowFlags_NoMouseInputs | ImGuiWindowFlags_NoNavInputs | ImGuiWindowFlags_NoNavFocus,
|
||||
|
||||
ImGuiWindowFlags_OverlayVerticalScrollbar = 1 << 19, // Draw the vertical scrollbar as an overlay (scrollbar space will not take up content region space)
|
||||
ImGuiWindowFlags_OverlayHorizontalScrollbar = 1 << 20, // Draw the horizontal scrollbar as an overlay (scrollbar space will not take up content region space)
|
||||
|
||||
// [Internal]
|
||||
ImGuiWindowFlags_NavFlattened = 1 << 23, // [BETA] On child window: share focus scope, allow gamepad/keyboard navigation to cross over parent border to this child or between sibling child windows.
|
||||
ImGuiWindowFlags_ChildWindow = 1 << 24, // Don't use! For internal use by BeginChild()
|
||||
|
Loading…
x
Reference in New Issue
Block a user