omar/imgui: Release v1.45
The horizontal scrolling release!
NOTE, POTENTIAL API-BREAKING CHANGES
- With the addition of better horizontal scrolling primitives I had to make some consistency fixes.
GetCursorPos()SetCursorPos()GetContentRegionMax()GetWindowContentRegionMin()GetWindowContentRegionMax()are now incorporating the scrolling amount. They were incorrectly not incorporating this amount previously. It PROBABLY shouldn't break anything, but that depends on how you used them. Namely:- If you always used SetCursorPos() with values relative to GetCursorPos() there shouldn't be a problem. However if you used absolute coordinates, note that SetCursorPosY(100.0f) will put you at +100 from the initial Y position (which may be scrolled out of the view), NOT at +100 from the window top border. Since there wasn't any official scrolling value on X axis (past just manually moving the cursor) this can only affect you if you used to set absolute coordinates on the Y axis which is hopefully rare/unlikely, and trivial to fix.
 - The value of GetWindowContentRegionMax() isn't necessarily close to GetWindowWidth() if horizontally scrolling. Previously they were roughly interchangeable (roughly because the content region exclude window padding).
 
 

Changes
- Added Horizontal Scrollbar via ImGuiWindowFlags_HorizontalScroll (#246).
 - Added GetScrollX(), GetScrollX(), GetScrollMaxX() apis (#246).
 - Added SetNextWindowContentSize(), SetNextWindowContentWidth() to explicitly set the content size of a window, which define the range of scrollbar. When set explicitly it also define the base value from which widget width are derived.
 - Added IO.WantTextInput telling when ImGui is expecting text input, so that e.g. OS on-screen keyboard can be enabled.
 - Added printf attribute to printf-like text formatting functions (Clang/GCC).
 - Added GetMousePosOnOpeningCurrentPopup() helper.
 - Added GetContentRegionAvailWidth() helper.
 - Malformed UTF-8 data don't terminate string, output 0xFFFD instead (#307).
 - ImDrawList: Added AddBezierCurve(), PathBezierCurveTo() API for cubic bezier curves (#311).
 - ImDrawList: Allow to override ImDrawIdx type (#292).
 - ImDrawList: Added an assert on overflowing index value (#292).
 - ImDrawList: Fixed issues with channels split/merge. Now functional without manually adding a draw cmd. Added comments.
 - ImDrawData: Added ScaleClipRects() helper useful when rendering scaled. (#287).
 - Fixed Bullet() inconsistent layout behaviour when clipped.
 - Fixed IsWindowHovered() not taking account of window hoverability (may be disabled because of a popup).
 - Fixed InvisibleButton() not honoring negative size consistently with other widgets that do so.
 - Fixed OpenPopup() accessing current window, effectively opening "Debug" when called from an empty window stack.
 - TreeNode(): Fixed IsItemHovered() result being inconsistent with interaction visuals (#282).
 - TreeNode(): Fixed mouse interaction padding past the node label being accounted for in layout (#282).
 - BeginChild(): Passing a ImGuiWindowFlags_NoMove inhibits moving parent window from this child.
 - BeginChild() fixed missing rounding for child sizes which leaked into layout and have items misaligned.
 - Begin(): Removed default name = "Debug" parameter. We already have a "Debug" window pushed to the stack in the first place so it's not really a useful default.
 - Begin(): Minor fixes with windows main clipping rectangle (e.g. child window with border).
 - Begin(): Window flags are only read on the first call of the frame. Subsequent calls ignore flags, which allows appending to a window without worryin about flags.
 - InputText(): ignore character input when ctrl/alt are held. (Normally those text input are ignored by most wrappers.) (#279).
 - Demo: Fixed incorrectly formed string passed to Combo (#298).
 - Demo: Added simple Log demo.
 - Demo: Added horizontal scrolling example + enabled in console, log and child examples (#246).
 - Style: made scrollbars rounded by default. Because nice. Minor menu bar background alpha tweak. (#246)
 - Metrics: display indices along with triangles count (#299) and some internal state.
 - ImGuiTextFilter::PassFilter() supports string range. Added [] helper to ImGuiTextBuffer.
 - ImGuiTextFilter::Draw() default parameter width=0.0f for no override, allow override with negative values.
 - Examples: OpenGL2/OpenGL3: fix for retina displays. Default font current lack crispness.
 - Examples: OpenGL2/OpenGL3: save/restore more GL state correctly.
 - Examples: DirectX9/DirectX11: resizing buffers dynamically (#299).
 - Examples: DirectX9/DirectX11: added missing middle mouse button to Windows event handler.
 - Examples: DirectX11: fix for Visual Studio 2015 presumably shipping with an updated version of DX11.
 - Examples: iOS: fixed missing files in project.
 
Bonus: a proof of concept of building something from the low-level components of ImGui. It's a not really functional demo (missing lots of stuff) but may inspire you to build custom high-level components https://github.com/ocornut/imgui/issues/306

