Commit Graph

3815 Commits (459de65477423360176447e79df2f3a785b71f3d)

Author SHA1 Message Date
omar 0dc18a6ca6 Documentation tweaks, comments
omar 8149408408 Merge branch 'data_types'
# Conflicts:
#	CHANGELOG.txt
#	imgui.cpp
omar 14f575ff76 Scrolling: Fixed a case where using SetScrollHere(1.0f) at the bottom of a window on the same frame the window height has been growing would have the scroll clamped using the previous height. ()
omar 91e39e72a3 Combo: Horizontally offset items using WindowPadding instead of Indent, for consistency.
omar 773d484009 Internals: Made ContentsRegionRect absolute to reduce confusion. Renamed InnerRect to InnerMainRect, renamed WindowRectClipper to OuterRectClipped.
omar f83f566530 Internals: Nav: Extracted code into a NavClampToVisibleAreaForMoveDir() + fix debug code + inline some functions, removed obsolete EndChild() comment.
omar 4cabf599c4 Data types: Fix format srtings with leading blanks. Fix ColorEdit4() to not use obsolete formats (when using IMGUI_DISABLE_OBSOLETE_FUNCTIONS) ()
omar ad2927888b Apply fix from data_types branch, some widgets broken when format string doesn't contains a %. Broken by 92f0165f85. Data_types branch fix c5fb929555.
omar 5f464877ed Internals: Declaring DragBehavior, SliderBehavior in there (no warantee given) as they may be useful to custom widgets.
omar c5fb929555 Data types: Fixed empty format string (or no % specifier) breaking the parsing back of values.
omar 280c05e4f8 Fix to allow compiling in unity builds where stb_rectpack/stb_truetype may be already included in the same compilation unit.
omar 0bf43b3a1b Settings: Added LoadIniSettingsFromDisk(), LoadIniSettingsFromMemory(), SaveIniSettingsToDisk(), SaveIniSettingsToMemory(), io.WantSaveIniSettings. (, )
omar 023cc25c7c Internals: Removed unnecessary allocation indirection for g.LogClipboard (this only made sense when there was a global context instance)
omar 3e8087458d SliderScalar, VSliderScalar(): Support for any data types. Tested with various ranges/limits. Note that Drag/Slider/Input currently fail if the format string doesn't preview the actual value. Will fix next. (, , , )
omar 944f414cc6 Internals: A few selected math helpers are now using template to handle all supported types. Added ImPow() to wrap float/double in a standard manner without calling pow(double) when not needed in Drag code.
omar f4c16fbb99 Internals: Data types: Made format string optional. DragBehavior: Moved a bit of code outside of the template. Slider tidying up. Removed unnecessary call to fabsf().
omar dcd26f1295 DragFloat, DragInt: Default format string is none is passed to the function. Fixed demo using old style %.0f.
omar f47c756755 Internals: Missing const, some renaming. Tweak legacy fast path.
omar 0699ae161f DragInt, DragScalar: Actually made the fast-past handle the now-most-common case..
omar 7640439747 DragInt: Patch old format strings to replace %f by %d when using the DragInt() entry point. (, , , )
omar 069b284f17 Internals: Tidying up internal helpers. Fixed a case ImParseFormatTrimDecorations() can return an off by one (out of bound) pointer if the format string is invalid. Extracted ImParseFormatFindEnd() out of TrimDecorations so we can use it to find the format type and replace the %f in old Int apis.
omar 086c3925c4 Internals: Fixed DragInt* default format string. InputScalar(), InputScalarN(), removed InputFloatN(), InputInt(). Note that DragInt2/3/4 will %f format strings will currently be broken. (, , , )
omar 6c932479f2 Internal: DragScalar(), InputScalar() now support signed/unsigned, 32/64 bits, float/double data types. (, , , )
omar 93b8580a8d Internals: DragFloat: Fixed power handling. Use an temporary accumulator and no absolute values so we will be able to manipulate double as well as 64-bit integers. (, , )
omar 3f04fd0644 Internals: DragFloat: Removed DragSpeedScaleFast/DragSpeedScaleSlow since it's not yet usable and Nav version doesn't have an equivalent.
omar 4780ac1ca4 Internals: Data types: Added s64, u64 data types. Added support in InputScalar(). Removed internal.h InputScalarEx() to InputScalar(). Removed cheap-relative-operators support in recently added U32 data path, since this is heading toward being legacy code. + Fixed InputDouble parsing code. (, , )
omar d9fa1f869e Comments about using "power curves". Demo tweaks. ()
omar 8a370f6491 SliderFloat: Fixed grab size and steps with %g format. (, )
omar 10e3f17235 DragFloat/SliderFloat internal InputScalar trim leading/trailing spaces emitted from the format string when presenting an edit box to the user. ()
Follow up to 6881d065b8
omar a62f195e83 Internals: Renamed IsCharIsSpace() to IsCharIsBlank*() to match standard terminlogy and added ascii/u16 variations.
omar ef05141a06 Internals: InputScalarEx: Tweak internals so there is a fast path for the simple case.
(in particular because it makes it clear what the extra code is for, so people tempted to create their own InputText data transform/handler understand how little is actually needed)
omar ed756d474e Internals: Added ImGuiDataType_Uint32 data type which is usable with InputScalarEx().
omar 7df985bc5c Nav: Fixed hovering a Selectable() with the mouse so that it update the navigation cursor. Fixed c8b9b2c6 which was incorrect ()
omar a1da7f9860 Internals: Tweaked ParseFormatPrecision(), clarified its more limited purpose, allowing 2-digits precisions since it makes (some) sense for doubles. ()
omar 92f0165f85 DragFloat, SliderFloat: Rounding scalar using the provided format string instead of parsed precision. ()
omar 6881d065b8 DragFloat/SliderFloat internal InputScalar trip trailing decoration off the format string when presenting an edit box to the user. ()
omar d7e24416dd DragFloat/SliderFloat internal InputScalar relies on the user supplied format string to format and parse value. ()
The trailing text after the format will be displayed in the InputText but not affect back parsing. Ideally we can try to strip it later.
omar f2e9dddeca DragDrop: Removed const qualifier from ImGuiPayload 's void* data, easing casting on user side.
omar f80314754c InputFloat,InputFloat2,InputFloat3,InputFloat4: Added variations taking a more flexible and consistent optional "const char* format" parameter instead of "int decimal_precision". This allow using custom formats to display values in scientific notation, and is generally more consistent with other API. Obsoleted functions using the optional "int decimal_precision" parameter. ()
omar 73445ff248 Renamed all "display_format" arguments to "format" to emphasis that they also affect rounding of values. (, )
omar 8a38271a7c SliderFloat, DragFloat: Fix to allow input of scientific notation when Ctrl+Clicking a slider or drag, matching the change done in c19b2781 for InputFloat(). (, )
omar 066550de68 DragFloat, DragInt: Cancel mouse tweak when current value is initially past the min/max boundaries and mouse is pushing in the same direction (keyboard/gamepad version already did this).
omar a84aff1875 Internals: DragBehavior: tweaks internals.
omar 1d99b5f963 Internals: Reordered parameters of DataTypeFormatString() internal helper functions and shallow tweaks.
omar 101f9b42b7 InputText: Fixed returning true when edition is cancelled with Esc and the current buffer matches the initial value.
Bruce Mitchener f8c9c33d33 Fixed static analyzers warnings with bool literals ()
* Use `false` instead of `0` for a bool literal.
* Simplify calls to RadioButton to not need bool literals.
omar eb1c36fdfb Added IMGUI_CHECKVERSION() macro to compare version string and data structure sizes in order to catch issues with mismatching compilation unit settings. (, )
omar 711a63befc Misc: Stop moving window if mouse position becomes invalid. Flagged menus are _NoMove for sanity.
omar d317d90610 Misc: NavCalcPreferredRefPos selects between mouse and nav reference position + added sanity assert (merged from viewport branch to minimize branch drift).
omar 9cbca8c127 Begin: Shuffled some code, _should_ have no side-effect. Clear NextWindowData in one call and more consistently. (merged from viewport branch to minimize branch drift).
omar e3453d0dc4 Misc: Comments and shallow/small changes (merged from viewport branch to minimize branch drift).
Bruce Mitchener b28535d1da ImGuiTextBuffer::appendfv needs to va_end the args_copy.
omar 01fa934222 Internals: Removed unecessary Pos/PosFloat separation, only reason appears to be mostly pre-1.0. The only piece of code that I expected sub-pixel window position to matter actually already round its delta (wrongly so, will fix later/separately if we want).
Bruce Mitchener 7ebdadf92b Fix various typos.
omar 46698c96c5 Removed presumably obsolete MovingWindow tests which prevent move/merge logic in viewport branch from working in all situations (e.g. docking away when ActiveId is the ID of a tab)
omar dc03c93164 Internals: Removed misleading ImRect::FixInverted + fix minor formatting in Readme.
Demo: Fixed Overlay: Added a context menu item to enable freely moving the window.
omar 7b6b7038c5 Window: Relaxed the internal stack size checker to allow Push/Begin/Pop/.../End patterns to be used with PushStyleColor, PushStyleVar, PushFont without causing a false positive assert. ()
omar 22773e03a2 InputText: On Mac OS X, support Cmd+Shift+Z for Redo. Cmd+Y is also supported as major apps seems to default to support both. ()
omar e2f831c80e InputText: tweaks, minor refactoring, renaming + comments ()
omar 037d5a7e98 Columns: Fixed a bug introduced in 1.51 where columns would affect the contents size of their container, often creating feedback loops when ImGuiWindowFlags_AlwaysAutoResize was used. ()
omar 49a451d247 Window: Fixed windows using the ImGuiWindowFlags_NoSavedSettings flag from not using the same default position as other windows. ()
omar f93dce9513 InputText: Tweak to make the if statement more readable + update Changelog ()
Mikko Sivulainen 1554d97492 on OSX, ignore text input when CMD key is down
omar f5700f238d Documentations for Github users. Metrics: Fixed display of NavRectRel, added display of ParentWindow.
omar 6d6f4a85f6 Fixed DisplaySafeAreaPadding not affecting popups/tooltips/menus at it should have (partly broken in 2e5577f44f).
omar 6a0b2627ad BeginMainMenuBar: Followup to 1e41bad9. Removed public window flag. DisplaySafeAreaPadding defaults to (3,3) instead of (4.4). Comments, tab to spaces, Changelog. ()
Doug Binks 1e41bad90f Added DisplaySafeAreaPadding to MainMenuBar height and fixed starting x position. Fixes main menu bar problems with TVs. ()
omar 7241dc61d4 Fixed default proportional item width lagging by one frame on resize + miscellaneous minor tweaks.
daniel-murray 83d97d4a9b Fix typos KeyDown => KeysDown
omar d1c16d4ccd Documentation bits. Misc comments.
Guillaume Chereau 58fd8ea303 Fix minor error in doc
Not a big deal.
omar d1d2bbf86a Internals: Popup: Moved popup/menu/tooltip positioning code (viewport branch needs it organized in a different manner, so we are pushing the bulk of it here to minimize differences).
omar bfc0efaae9 Internals: Window: Aggregating ImDrawList into the ImGuiWindow structure.
omar 84fe711bdf Settings: Fixed saving an empty .ini file if CreateContext/DestroyContext are called without a single call to NewFrame(). ()
omar 296f03374b NewFrame: Prevent division by zero in frame rate calculation if io.DeltaTime is continuously zero. (, )
omar 928a4ad315 Begin: moved tooltip position code in an else block. Misc comments
omar 52cac135c9 Internals: Renamed GetFrontMostModalRootWindow() to GetFrontMostPopupModal() and exposed in imgui_internal.h ()
omar 9117632bf0 Misc: IM_DELETE() helper function added in 1.60 doesn't clear the input _pointer_ reference, more consistent with expectation and allows passing r-value.
omar 6f1f5cbc20 Version 1.61 WIP
omar 3a29ddbcfa Version 1.60
omar 6d0c720451 Internals: Removed unused internal variant of ArrowButton().
omar 82b7a39f31 Fixed a few zealous warnings.
omar c712f7275d Fixed unused variable warning.
omar c2fc978983 Style: Default style is now StyleColorsDark()! Toward a 1.60 release :) ()
omar 0734a12d25 IO: ImGuiConfigFlags_NoMouse disable hovering so it is not destructive. Amend 2464e62a1a
omar e88fb10d7c NewFrame: Extract some code into a NewFrameUpdateHoveredWindowAndCaptureFlags() which can be of use with touch-based inputs systems.
omar c1bdab6d5b Comments about io.WantCapture flags + todo entries.
omar ac2027c415 NewFrame: Extract some code into a NewFrameUpdateMouseInputs function. Moved settings saving higher up in the function so it is next to its peers.
omar 2464e62a1a IO: Added ImGuiConfigFlags_NoMouse to force clear/disable mouse inputs in NewFrame().
omar 18a243bef0 Columns: Fixed calling Columns() again with the same number of columns. ()
omar fc30462f18 Hide new windows for one frame until they calculate their size. Also fixes SetNextWindowPos() given a non-zero pivot. ()
omar 5aa3f99b4c Internal: using more consistent comparaison with HiddenFrames to not imply it could be -1. Tweaked comments.
omar 4649967112 Added extra comments and assertions to avoid user combining ImGuiCond flags. ()
omar cd1e6e384f Tooltip windows uses PopupBorderSize () + commented out debug stuff.
omar 1e116e6c17 Removed need for -Wnocast-qual on modern Clang/Xcode as a token of good behavior. Unfortunately the old stb_ decompress code is a little const clunky. + warning fix in stb_textedit which is already in master afaik.
omar 84fbc49403 BeginChild: named child don't include the full id inside their name ()
omar 78610a54d2 Fixed Clang zealous cast-call warning (on par with GCC) which decided to warn against explicit C-style casts now.
omar 77e234d9df Comments
omar c461401b21 Comments, FAQ
omar cc96477b1c Comments ()
omar b69dc45f6e Internals: Removed ImGuiDataType_Float2.
omar c19b27813d Added InputDouble() function. We use a format string instead of a decimal_precision parameter to also for "%e" and variants. () May transition the other InputXXX function to use format strings as well.
omar c796960ff9 InputFloat: Scientific input. InputText: Added ImGuiInputTextFlags_CharsScientific to add 'e' 'E' to list of characters that can be input. (later useful for )
omar 21ac470a8a Nav: Fixed a crash with IMGUI_DEBUG_NAV_SCORING enabled + added info to Metrics.
omar 75c3793db5 IO: Added ImGuiConfigFlags_NoSetMouseCursors. Added ImGuiBackendFlags_HasMouseCursors, ImGuiBackendFlags_HasSetMousePos. (, , )
omar dcf7c3d188 Added ImGuiBackendFlags for backend to expose its capabilities. Added ImGuiBackendFlags_HasGamepad. (, )
omar 170f44e6f0 IO: Renamed io.WantMoveMouse to io.WantSetMousePos (was added in 1.52, _not_ used by core and only honored by some binding ahead of merging the Nav branch) + internal renaming ()
omar d1c45db9e8 Fixed enum typo.
omar 62e94717eb Nav: InputText: Allow editing text input fields with NavActivate (space). Not sure about that, on one hand it feels more consistent but you can't finish the editing with space to double space (activate + input space) could feel inconsistent. ()
omar 33ad8b2f0c Nav: Track nav input source more generally (gamepad vs keyboard) () + update todos and demo tweaks
omar e7670c0bcc Style: CloseButton() now display a proper cross. Using Button colors for background. Removed ImGuiCol_CloseButton, ImGuiCol_CloseButtonActive, ImGuiCol_CloseButtonHovered as the closing cross uses regular button colors now. ()
omar b9ac127b0b Internals: Columns renaming fields
omar 351b3fa7b0 Updated Changelog following merge of + fixed entry added to wrong version Changelog in 1ef1acbd8d
omar a3d5f92214 Merge branch 'master' into font_offset
omar 642c6748ac Comments, Changelog
omar cea7492bab Render: Removed the code that disable render if style.Alpha is 0.0f, it is both incorrect (as style Alpha can be modified mid-frame), not really necessary (just tested that full Alpha = 0 will lead to empty draw lists!) and misleading (bulk of the work was already done).
omar 51afaf7117 Fixed type cast warning.
omar 0ec356eb6e Comments, FAQ update.
omar 5ed45d0aec Columns: Fixed destructive small resize. (). The OffsetNorm clamp introduced by was ok as it didn't write back into the storage, which started doing making it destructive. Right now I don't think the clamp is needed at all. It had uses (eg: hide the issue fixed by bf7481eba0).
omar bf7481eba0 Columns: Extent stop at the right-most clipped pixel. The right-most column might appear a little wider but it's usable space matches the others. (). +9 Internal: Store InnerClipRect.
omar 968a8d2a3f Columns: Clamping MaxX above MinX. This shouldn't have much of a benefit / affect, but the internal values are more sane this way. ()
omar ee770af72c Columns: Adding per-window display in Metrics. Tidying up, removing old code/comments. (, , )
omar 69e700f869 Renamed ImGuiStyleVar_Count_ to ImGuiStyleVar_COUNT for consistency with other enums. Added
omar 8a4093f38b Added ArrowButton(). Exposed ImGuiDir.
omar 1549c5cf5e BeginCombo(): Added ImGuiComboFlags_NoArrowButton and ImGuiComboFlags_NoPreview flags + hover color matches drag and sliders.
omar ad7ff7504e Merge branch 'patch-1' of https://github.com/stfx/imgui into stfx-patch-1
omar 839cdd37a3 Combo: Arrow button isn't displayed over frame color, so color is consistent with other button + the button doesn't have inner rounding.
omar 11f13ab24f Internal: renamed RenderTriangle() to RenderArrow().
omar 6797ee4b68 Nav: Added links to PNG/PSD files for PS4 and Switch. Fixed suggested Joy-con mapping as per typical Nintendo-style mapping. ()
omar c994796e26 Internal: Moved IM_NEWLINE helper to imgui_internal.h
omar 2c9f45bbe7 Renamed ImGuiNavFlags io.NavFlags to ImGuiConfigFlags io.ConfigFlags. ()
omar c7835dd189 ImRect: Removed misleading IsFinite() function used by some Nav code.
omar 5427eca960 Compacted some old Breaking Changes notes (Pre July 2015 stuff)
omar bd267ad739 Changelog: Added all change infos since 1.53 up to the current version.
omar 27667fc035 TreeNode: Renamed Beta ImGuiTreeNodeFlags_NavCloseFromChild to ImGuiTreeNodeFlags_NavLeftJumpsBackHere. ()
omar 8040cf1425 Merge branch 'master' of https://github.com/podgorskiy/imgui into podgorskiy-master
Podgorskiy 94466745bb A tiny optimization to ImLineClosestPoint. Removed unnecessary sqrtf call.
ab_lenSqr -> ab_len_sqr
Moved line where ab_len_sqr is computed after the first return
omar b28995b667 Nav: Internals: Exposed NavMoveRequestCancel in imgui_internal.h ()
omar 2c3c5125b3 Drag and Drop: BeginDragDropSource(): temporarily removed the optional mouse_button=0 parameter because it is really usable in typical conditions at the moment. (, )
omar 7cbcccd96b Update Breaking Change section with moved misc/fonts/ ()
omar 7ee2bc8f5e FAQ about backslashes in string literal since the one in main.cpp isn't being noticed enough. ()
omar b33f0e215f Initialization happens during CreateContext(), which makes it easier for platform layers to interact with the context during their initialization.
omar 1399c9c8a9 Merged a bunch of small inconsequential things from my work branch, to reduce the diff noise.
omar bdb27366e7 Nav: Tweak windowing highlighting for full viewport windows.
omar 63332d152a Obsoleted the io.RenderDrawListsFn callback, you can call your graphics engine render function after ImGui::Render(). Use ImGui::GetDrawData() to retrieve the ImDrawData* to display..()
Examples: Updated examples.
omar 20c14f9589 Fixed GCC zealous warnings ()
omar 1cbfe0700c Plot: plot a flat line if scale_min==scale_max ()
omar 30c469f7c5 ImFont: DisplayOffset.y defaults to 0 instead of +1.
omar eb1d481915 Comments (, )
omar d8d1da27fd Merge branch 'master' of https://github.com/RandyGaul/imgui into RandyGaul-master
Randy Gaul 2c4a761982 __cdecl markup for non-standard calling conventions via MSVC
omar 64e0666803 Internals: Moved some of NewFrame() into UpdateMovingWindow().
omar 7cc1bc7635 Added IsAnyMouseDown() helper.
Examples: DirectX9/10/11: Using IsAnyMouseDown() instead of local function.
omar 3b163ac35b Internals: Clarified internal storage for RootWindow with specific semantic (the Docking branch will need to introduce finer differenciation there.)
omar d17d21da1b Warning fix. ()
omar 7c16d52f72 Updated version to 1.60 WIP to emphasis on the addition of required calls CreateContext/DestroyContext + merged the massive Navigation branch (, )
omar f0364aa359 Merge branch 'context'
# Conflicts:
#	examples/allegro5_example/main.cpp
#	examples/directx10_example/main.cpp
#	examples/directx11_example/main.cpp
#	examples/directx9_example/main.cpp
#	examples/marmalade_example/main.cpp
#	examples/opengl2_example/main.cpp
#	examples/opengl3_example/main.cpp
#	examples/sdl_opengl2_example/main.cpp
#	examples/sdl_opengl3_example/main.cpp
#	examples/vulkan_example/main.cpp
omar 4e5b7612ae Nav: Documentation tweaks. ()
omar 3171f90a1a Nav: Keyboard is now automatically mapped based on io.KeyDown[]. ()
omar 7e32fc7109 Nav: Toward automatically mapping keyboard input. Renamed ImGuiNavInput_PadXXX to ImGuiNavInput_XXX. Renamed ImGuiNavInput_KeyXXX to ImGuiNavInput_KeyXXX_ (internal). ()
omar ed4bbc4fd4 Nav: Comments, guides.
omar cea8017e0b Merge branch 'master' into context
omar db071184a0 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar b50dce54ea Drag and Drop: TreeNode as drop target displays rectangle over full frame. Added optional internal storage for item display rect. Will expose later. (, )
omar c6ba7c8231 Internals: TreeNode: Renaming local to be more consistent with other widgets.
omar e6926d9f7c Internals: Refactored bool LastItemRectHovered into flags. ()
omar ce2b8d3255 Nav: Comments, removed extraneous parameter.
omar 0c0d811859 Nav: SetItemDefaultFocus() doesn't make the navigation cursorr highlight visible. Renamed NavInitResultExplicit to NavInitRequestFromMove. ()
omar fb9fecea5e Nav: Sliders and Drags are toggle activated instead of requiring user to cross Cross/Space. ()
omar 4932303e62 Nav: DragBehavior: Tweaks (to take the noise out of the next commit).
omar e5e3cc617e Nav: Maintaining a NavActivatePressedId field that widget can conveniently use along with NavActivateDownId.
omar fb7cf4a475 Nav: Removed old unnecessary ifdefs.
omar f35734c925 Nav: Debugging code. ()
omar 92ee6b1185 Nav: Sets io.WantCaptureKeyboard when navigation is active. This is a little agressive but probably the best default and also a good way to get feedback. Added ImGuiNavFlags_NoCaptureKeyboard to disable this behavior. Comments. ()
omar 348c46d21e Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 11d0fc8220 Tooltip: BeginTooltip() sets NoInputs flag.
omar 1dedbf8091 Style: Fixed missing style.MouseCursorScale initialization (), messed up original commit badly.
omar 533fe8cb55 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 8ad88f725c Nav: Minor tidying up. ()
omar 3f297e74e4 Merging the minor/shallow changes from Navigation branch.
omar 2081fc15b5 Added assert in BeginChild(ImGuiId id).
omar 223be68d77 Nav: Debugging stuff.
omar 66ff820eaa Nav: Ensure g.NavScoringRectScreen is always finite and not inverted. ()
omar 0bd15b52a6 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 147ec8d1e2 Style Added style.MouseCursorScale, may remove ().
omar 648de2fc00 Nav: Press Left on a child with ImGuiTreeNodeFlags_NavCloseFromChild moves you to parent node instead of closing it immediately. More standard. (, )
omar ce9d7baaba Nav: TreeNode: Added ImGuiTreeNodeFlags_NavCloseFromChild flag, allow closing a TreeNode() from any of child. The explicit flag is not great, perhaps allowing some form of inheritance would help. (, )
omar 9120938200 Nav: Revert 5c9ea4d53a with comments. ()
omar 96ddfbc973 Nav: Modal windows can't be closed with Nav PadCancel. ()
omar efbd8cebe7 Nav: Comments ()
omar c4fc879508 CloseButton: Fixed cross positioning.
omar 942c140710 CloseButton: Fixed cross positioning.
omar 68d3e139a7 Nav: When focusing a parent window while closing a popup, hide its highlight for one frame to avoid potential double highlight and flicker with the common pattern of menu items leading to the opening other windows. ()
omar 950f260a32 Nav: Fixed Selectable/MenuItem Nav Highlight from using rounding when outer highlight stays square. ()
omar c7b7b181b5 Nav: CloseButton reacts when clipped. ()
omar 5c9ea4d53a Nav: Fixed press Left on sub-menu when parent wasn't a menu - we were just checking at the wrong level. ()
omar eb737e0a42 Nav: Child window is restored on focus follow up. Fix bdd868704f. (, ~#727) One visible issue was pressing Left to leave a child menu.
omar 95f9c74b9a Metrics: Displaying some of the important internal window flags.
omar 79ff3c2d49 Merge branch 'master' into navigation
omar 07163804df Internals: Renamed CloseInactivePopups() to a better ClosePopupsOverWindow(). Exposed in imgui_internal.h
omar 5812d0b751 Nav: Using CTRL+TAB / PadFocusNext/Prev to Focus a window closes the previous window popups. ()
omar fd6d8863f7 Nav: SetFocusID() clears NavInitRequest for consistency (repro would a same frame interaction / race condition). ()
omar ef2c3bcdee Nav: Fixed InitRequest leaking when changing window (repro was to navigate inside File->Options->[Child] then press Left and notice how we would land on parent window on the fist item after the current one). ()
omar 8cc2dbc3bd Internals: Nav: Extracted code into IsWindowNavFocusable(). ()
omar bdd868704f Nav: Child window is restored on focus when returning to layer 0 or refocusing. This is a little experimental and potentially error-prone right now. (, vaguely relate to ~#727) Ideally we should maintain a non-sorted last-focused list that include childs windows.
omar 7b22a91578 Nav / Slider: Fixed reaching edge of integer slider with navigation input, bug introduced on January 25 in Nav branch 10a4a77b27. ()
omar eaa6f490a2 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
omar 9bc5c089b6 Internal: Avoid needlessly bringing parent of front-most child back to front. This is mostly to reduce flicker/confusion in Metrics when traversing windows. We could aim at separating the child windows from non-child windows at some point.
omar 76d8af4036 Nav: when browsing a window that has no activable items (scroll only) we keep a highlight on the child. ()
omar aa2dda7610 Nav: Tweak code to be easier to follow + updated todo list after clarifying an issue.
omar e6c0b212e8 Nav: Fixed initial movement (which sends an InitRequest) from clearing NavDisableHighlight and fully enabling Nav feedbacks. ()
NB: Setting g.NavInitResultExplicit = false on InitRequest match was added in initial commit c2cb2a6928
omar 9c8fb804ed Log: Comments and extraneous assets to clarify intent. ()
omar 27980d9688 Merge branch 'master' into context
omar 47e81a6194 Merge branch 'master' into navigation
omar cd3dd886de Moved extra_fonts/ to misc/fonts/. Moved .natvis file to misc/natvis/ ()
omar 23c11e9764 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 596b6d6de2 Style: Enable window border by default. ()
omar bebe03db05 Metrics: Minor formatting tweaks
omar bd579e5429 Nav: Removed io.NavUsable --> io.NavActive, io.NavActive --> io.NavVisible. (). NavActive takes account of NavFlags enable flags.
omar 9fc6f5907b Nav: Fixed NavRectRel being cleared for one frame when restoring layer 0 with Alt/Menu key or Escape. Maybe was inconsequential. ()
omar 1ed7bce3ed Nav: Removed old unused code. ()
omar a8763d14c5 Internals: Renaming.
omar 38197a236d Internals: Renaming.
omar a7ad5134e5 Nav: window that are filling the entire display/viewport gets their windowing highlight clamped within. ()
omar acf21ee429 Nav: Windows with ImGuiWindowFlags_NoBringToFrontOnFocus flag aren't temporarily displayed on the front when using CTRL-TAB. ()
omar bed6ef03f5 Nav: workaround to kindly handle ALT-TAB without detecting TAB-release on backends that clear all keys on unfocus. ()
omar c851b33352 Nav: Added proper version of ImGuiWindowFlags_NavFlattened that handles scrolling nicely. Marked as private as I'm not happy with the name. ()
omar b40dc5c4f2 Nav: NavScoreItem uses g.CurrentWindow and not g.NavWindow. This was changed as part of b3cba62b80 when first trying to implement the NavFlattenedFlag. As it turns out we won't need it. Committing separately for safety. ()
omar 020b153d35 Nav: calling NavMoveRequestCancel() more consistently when hijacking a request. Not strictly necessary. ()
omar c8d8dc7f0a Nav: Internals: Renamed RootNavWindow to NavRootWindow ()
omar 72485a5d04 Nav: Refactor NavMoveResult** flags into ImGuiNavMoveResult structure as we are going to want two instances of it. () (+1 squashed commits)
+ store window inside result.
omar 1cf38d0334 Internals: Nav: Renamed ImGuiNavForward enum ()
omar 4654040bcb Nav: Comments, added enum to clarify NavForward code. ()
omar c8b9b2c6bd Nav: Mouse hovering selectable / menu items only activate them if they are on the active NavLayer. ()
omar 21771adb94 Nav: Debug overlay uses default font. ()
omar 3ded262776 Merge branch 'master' into navigation
omar 2d9d7a10ca Scrollbar: Fix for ScrollbarY enable check after ScrollbarX has been enabled. () Looks like a bug introduced in c36e586cce.
omar 1f3b66b10a Scrollbar: Fix ScrollbarX enable test subtracting WindowPadding.x. This has been here since 65a191c005 () tho at the time it is possible that SizeContents wasn't calculated as evenly.
Test: auto-resize with: ImGui::Begin("Test", NULL, ImGuiWindowFlags_HorizontalScrollbar); ImGui::Button("##xxx", ImVec2(500,500)); ImGui::End();
omar 10a4a77b27 Nav: Drag, Slider: When already past a limit and pushing in the direction of the limit, we don't clamp values again. ()
omar 04d5783ffd Nav: Cleaning up + using ImGuiInputSource source enum instead of a silly bool. ()
omar d088bd86ad Nav: Added keyboard moving and resizing via the CTRL-TAB windowing mode. ()
omar 486f0a8ba0 Fixed potential warning (forward declaration and definition didn't match signature. forward declaration only here for consistency)
omar f2d5300408 Nav: Keyboard: Added CTRL+TAB (and CTRL+Shift+TAB) style window selection. ()
omar ed088b00be Nav: Style: Improved display of windowing highlight (for focus selection via PadMenu or Ctrl+TAB). (, )
omar e9070e768e Nav: Fixed renaming of c09016b12a that were incorrect. ImGuiNavInput_PadLeft -> PadDpadLeft, _PadScrollLeft -> PadLStickLeft. ()
omar 5d31e1696f Fix SetNextWindowContentSize() with 0.0f on Y axis (or SetNextWindowContentWidth()) overwriting the contents size. Broken in eab6333a0b. ()
omar 5f7f27c8de Nav: Comments. ()
omar d404b93b6b Nav: Mouse clicking on a window (to select/move) disables hides nav highlight. () + comments
omar 89b0ca1f8f Nav: FocusWindow() doesn't reset NavRectRel (which was flickering e.g. when returning to a parent menu). This was added in the initial nav branch commit and I don't see a reason for it. ()
omar f3776055d6 Merge branch 'master' into context
omar 455989b8b1 Nav: Added io.NavFlags to hold various options. Added ImGuiNavFlags_EnableGamepad and ImGuiNavFlags_EnableKeyboard for bindings to use ()
omar 28671aa821 Nav: Internals: Moved some enums and functions to internals, renamed ImGuiNavReadMode to ImGuiInputReadMode as well. ()
omar 8227176c17 Nav: Menus: Fix for using Left direction inside a menu with widgets layed out horizontally. Left to close is now handled as a fallback inside EndMenu(). ()
omar c09016b12a Nav: Renamed ImGuiNavInput_PadLeft / etc. to ImGuiNavInput_PadLStickLeft. Renamed ImGuiNavInput_PadScrollLeft to ImGuiNavInput_PadRStickLeft, aka removing trying-too-hard semantic from the enums. ()
omar bd278e958e Nav: Added ImGuiNavInput_KeyLeft/Right/Up/Down set so we can differenciate gamepad/keyboard inputs. ()
ocornut 680162eb32 Merge branch 'master' into navigation
omar 5148937d4d Fixed old Begin() calling SetNextWindowBgAlpha() with negative values. (, )
omar 37ee99983f Clear BgAlphaCond properly after consuming it. Fixes 9a76fd30fd ()
omar 64b786c2aa Nav: Tweak/fixed popup positioning when using nav without the io.NavMovesMouse flag (it was always assuming a mouse cursor and allocating space for it) ()
Note that this bit include badly hardcoded sizes, expecting an improvement later.
omar cea78cc576 Nav: Update hovered logic, so IsItemHovered and ButtonBehavior are more consistent with each other. The known case this fixes is nav focusing on a color button, tooltip appears, mouse move: previously tooltip would stay up. ()
omar eb7ec781dc Nav: Tweak GetNavInputAmount(). Split debug defines.
omar f6ee8d30fb Comments ()
omar d500113f1d Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
omar 9a76fd30fd Added SetNextWindowBgAlpha() helper. () particularly helpul with the marking of the old 5-parameters version of Begin() as obsolete.
omar 13c407591e Nav: Comments, tweaks
omar db2ba13154 Internals: Exposed SetCurrentFont() in imgui_internal.h
omar 9076366c17 Style: Exposed ImGuiStyleVar_WindowTitleAlign, ImGuiStyleVar_ScrollbarSize, ImGuiStyleVar_ScrollbarRounding, ImGuiStyleVar_GrabRounding + added an assert to reduce accidental breakage. ()
omar 1acb155419 Internals: Moved unnecessary MovingWindowMoveId field.
omar 5097368bd5 Tweaked FAQ.
omar 2026e792cd Context: NewFrame() asserts ()
omar 9edf211c0e Merge branch 'master' into navigation
omar 3ed2ddbfbe Metrics: Removed context size display.
omar 5e2aa6185c Reorganized context handling to be more explicit,
- YOU NOW NEED TO CALL ImGui::CreateContext() AT THE BEGINNING OF YOUR APP, AND CALL ImGui::DestroyContext() AT THE END.
- removed Shutdown() function, as DestroyContext() serve this purpose.
- you may pass a ImFontAtlas* pointer to CreateContext() to share a font atlas between contexts. Otherwhise CreateContext() will create its own font atlas instance.
- removed allocator parameters from CreateContext(), they are now setup with SetAllocatorFunctions(), and shared by all contexts.
- removed the default global context and font atlas instance, which were confusing for users of DLL reloading and users of multiple contexts
(, , , , )
omar 7e4d28a49d Context: Renamed SetMemoryAllocators() to SetAllocatorFunctions(). Tweaked comments. (, , , , )
omar e45d7a7060 Context: Added IMGUI_DISABLE_DEFAULT_ALLOCATORS to disable linking with malloc/free. (, , , , )
omar 5a301c29dc Context: Removed allocator parameters from CreateContext(), they are now setup with SetMemoryAllocators() and shared by all contexts. (, , , , )
omar ac5b7a1bdf Comments
Panos Karabelas 7c8a19978d Simplified return of ImGui::IsKeyReleased()
omar cd1409f4bf ImFontAtlas: Moved mouse cursor data out of ImGuiContext, fix drawing them with multiple context. Also remove the last remaining undesirable dependency on GImGui in imgui_draw.cpp, finishing the work recently done with ImDrawListSharedData. Hurra! ()
omar 0b1fecb792 Horizontal mouse wheel: renamed io.MouseHorizWheel to io.MouseWheelH. Reorganized the code in NewFrame(). Examples: Updated GLFW+GL and SDL+GL accordingly. ()
omar 6f6b6194b2 Merge branch 'tseeker/20171127-feature-horiz-wheel' of https://github.com/tseeker/imgui into tseeker-tseeker/20171127-feature-horiz-wheel
# Conflicts:
#	examples/sdl_opengl2_example/imgui_impl_sdl_gl2.cpp
#	examples/sdl_opengl3_example/imgui_impl_sdl_gl3.cpp
omar d4bf9b4686 Renaming for consistency.
omar 8877622fa8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar e5a6e85f6d Basic undocumented/unsupported combination of Child+Tooltip. The full feature needs substancially more work but this is enough for simplest cases. ()
omar 42a612d7c9 Begin: Removed asserts that got in the way of some flags combination. ()
omar 0978f00911 MovingWindow: Track click offset based on root window (undo 514d30d8cd). This should not affect the patch used for as the RootWindow for Child+Tooltip window points to itself now.
omar 74dc70c543 DragFloat: Fix/workaround for backends which do not preserve a valid mouse position when dragged out of bounds. ()
omar 63d47e8328 Drag and Drop: Increased payload type string to 12 characters instead of 8.()
omar 932d3f0198 NewFrame(): Added an assert to detect incorrect filling of the io.KeyMap[] array earlier. () + comments.
omar 7ccbb765e2 InputText: Cursor X position not lost when clicking outside on an item that's submitted after the InputText(). It was only noticeable when restoring focus programmatically. (, )
omar 2f15cc0855 Nav: Fixed popup wrap-around logic for windows with scrolling. ()
omar 05885b2e6d Merge fix.
omar 472ba1394c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 28a76af185 Internal: DrawData: Tidying, renaming.
omar a77913054f Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 1182174d81 Internals: DrawData: We don't need an intermediate layer for popups.
omar 0c06b43e6b Metrics: Tweaks to hover-window-drawlist to see window bounding box.
omar 038453258e Internals: DrawData: Refactored chunks into a ImDrawDataBuilder we can reuse.
omar 06eef2ce6f Internals: DrawData: renamed fields only (committing separately so that next commit is less nosiy).
omar 6eff21ee5e Revert "Nav: Fixed RenderNavHighlight() clipping, essentially revert 6ea90af6b7. ()"
This reverts commit 03f5cd6ca1.
omar 514d30d8cd MovingWindow: Track click offset based on MovingWindow and not its RootWindow. Followup to 3849bb4470. Comments + adding a local to ease patch .
Crunkle daa38f2ad0 Fix cross compilers
omar db63e71f13 Internals: Exposed SetCurrentFont() in imgui_internal.h
omar 1493de4f81 Internals: Merge of harmless stuff from Navigation stuff. Added GetHoveredID() internal helper.
omar c85d7d6e49 Nav: Remove GetItemID(), hide ActivateItem() before this feature is unfinished and has issue (full feature is on hold). Undo part of 59c6f35bf6 ()
omar c9be7d7254 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 0a98202714 Nav: Standardized FIXME-NAV marker.
omar cc173d7619 Begin: FIx previous commit - no need to call on collapsed window. Handle manual resize (grip, border, gamepad) before setting up window DrawList main clipping rectangle. Sane (and required for viewport code). (, )
omar 5e9ae92ae9 Begin: Handle manual resize (grip, border, gamepad) before setting up window DrawList main clipping rectangle. Sane (and required for viewport code). (, )
omar f7b10fc954 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 6a1011cf53 MovingWindow: Proper fix for 651538e attempt, without altering MovingWindow which has side-effects. Clicking on a window with the ImGuiWIndowFlags_NoMove flags takes an ActiveId so we can't hover something else. (ref , )
omar b74f24c3e5 Revert "Clicking on a window with the ImGuiWIndowFlags_NoMove flags takes an ActiveId so we can't hover something else. (ref , )"
This reverts commit 651538e13b.
omar 1c95dea88c Merge branch 'master' into navigation
omar 7d2a068dea Begin: Shuffling bits of code around.
omar cd7e178eac Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 651538e13b Clicking on a window with the ImGuiWIndowFlags_NoMove flags takes an ActiveId so we can't hover something else. (ref , )
omar a63fbbca8b Added ImGuiHoveredFlags_AnyWindow, ImGuiFocusedFlags_AnyWindow. Obsoleted IsAnyWindowHovered()/IsAnyWindowFocused() in favor of IsWindowHovered(ImGuiHoveredFlags_AnyWindow)/IsWindowFocused(ImGuiFocusedFlags_AnyWindow). Added to demo. ()
omar 67671c0ab5 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 1eee10778b Internals: Begin: Refactor some code into an UpdateManualResize() function.
omar 483f9b0d07 Internals: Begin: Moved DrawList setup code below, the viewport system will need to push the outer clipping rectangle as late as possible.
omar 03f5cd6ca1 Nav: Fixed RenderNavHighlight() clipping, essentially revert 6ea90af6b7. ()
omar 919fc548ad Merge branch 'master' into navigation
omar 6c583315e6 Begin: Moving some code around for the benefits of the wip viewport branch.
omar f610e25682 Internals: Using ImFloor().when appropriate.
omar fe919995da Merge branch 'master' into navigation
omar 933ee6cd5d InputText: Added alternative clipboard shortcuts: Shift+Delete (cut), Ctrl+Insert (copy), Shift+Insert (paste). ()
omar fd4d63a0c5 InputText: Moved code for checking clipboard shortcut so we can expand on it. ()
omar 168200f915 Popups: Comments, reorganize bits of the header section, renamed parameters.
omar a8e5542d78 BeginPopup: Exposed extra_flags publicly. ()
omar 3f4eccf154 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 3fc7cf190d OpenPopup(): Always reopen existing popup. Removed OpenPopupEx() bool reopen_existing which is always true. This also makes the public API on par with OpenPopupEx(). (, )
omar deab2ab015 Popups: Gently handle the user mistakenly calling OpenPopup() every frame. (when reopen_existing is true). ()
omar 69ff65f054 Internals: Popup: Renaming fields.
omar 3678307cd9 Popup, Menus: Tweaks and comments.
omar 369189b675 Internals: Popup: Explicitely setting up ImGuiPopupRef reduces confusion.
omar e09852fc49 Popups: Revert aca23fd3f0 (Oct 20, 2017). Because 1) I can't seem to find a default. 2) The if is definitively faulty and would have been all true. 3) It looks like possibly the following commit 6ab737a4bb could have made this unnecessary. Not absolutly certain. (~#439)
omar 63e4677b81 Popup: BeginPopupContextItem(), BeginPopupContextWindow(), BeginPopupContextVoid(), OpenPopupOnItemClick() all react on mouse release instead of mouse click. Note that they don't use the full ButtonBehavior() or tracking aabb on both click and release. Applications I've tried seems to behave inconsistently there but on-release-without-tracking is both fairly common and doesn't require extra code for the id tracking. (~#439)
omar c337cdcfd3 Internal: ButtonBehavior: Tweak to update g.ActiveIdClickOffset more consistently
omar 7ad169fa09 Merge branch 'master' into navigation + fix previous merge
# Conflicts:
#	imgui.cpp
omar d730a763f6 Internal: Reworked FocusFrontMostActiveWindow() so it fits the Nav branch usage as well.
omar 66b2ee6ea2 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar a34490239c Internals: Popup: Separating MousePosOnOpen and PopupPosOnOpen. They are equal in the master branch but different in the navigation branch.
omar 5fd19f037f Internals: renamed FocusPreviousWindow() to FocusfrontMostActiveWindow()
omar 2874aabb93 Internals: BringWindowToFront() iterate front to back, faster in majority of use cases.
omar 95b773370f Revert "Internals: Added LastActiveId, LastActiveIdTimer. ()" Will come up with a better design later.
This reverts commit 007f4034c9.
omar 007f4034c9 Internals: Added LastActiveId, LastActiveIdTimer. ()
omar 29c194b2a4 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 4fc9f44073 Merge of minor left-overs from private work branch to reduce drifts. Should be functionally a no-op.
omar 4b1240b2e1 Fixed non-popup child windows not honoring the HiddenFrames flag (can't see a reason). Docking relies on this.
omar b2ec0741f1 Internals: Settings api tweaks
omar 2b8224692e Merge branch 'master' into navigation
omar 0a0b252bb6 DragDrop: Removed IsDragDropActive() (introduced a few days ago, revert 06bea369c0) as our use case doesn't need it anymore. Will add it if there is a real need.
omar 33f7769d85 Columns: Clear offsets data when columns count changed. ()
omar f9b2058d5a Internals: Renamed ImGuiSimpleColumns to ImGuiMenuColumns to avoid confusion. Reduced internal buffer size (we only use 3 slots).
omar 05ec0b0736 Casing tweaks + clarify license copyright (simpler/safer?) ()
omar 96ccc484f9 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar 3c6fbe0849 Renamed ImGuiSizeConstraintCallback to ImGuiSizeCallback, ImGuiSizeConstraintCallbackData to ImGuiSizeCallbackData.
omar 7fcbd45500 Internals: NextWindow: Renamed, moved functions to member.
omar e339949de1 Internals: NextWindow: Using ImGuiCond for consistency.
omar 04b44398eb Internals: refactored g.SetNextWindow fields into g.NextWindow. structure (so it can be more easily transported/copied)
omar 7e03ee8d85 Merge branch 'master' into navigation
Cory McWilliams 561e9f286e Fix a memory leak of ImGuiColumnsSet's Columns vector. ImVector doesn't call destructors.
omar 170bcb2d7c Internals: NewFrame: Shuffled some code around (to minimize upcoming patches)
omar 7a15fc8de5 Merge branch 'master' into navigation
omar 2dd2ca0096 Removed CalcItemRectClosestPoint() which was weird and not really used by anyone except demo code. If you need it it's easy to replicate on your side.
Removed internal corresponding ImRect::GetClosestPoint() for now.
Essentially revert dcaafffe0e.
omar c4e6d622c1 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar 4fbdb50dca MenuBar: Fixed menu bar pushing a clipping rect outside of its allocated bound (usually unnoticeable).
omar 4ba2e85744 Demo: Tweak. Comments. Metrics: Added some Drag and Drop info.
omar 90ff4ae5d1 BeginPopupModal(): the conditional test for SetNextWindowPos() was polling the wrong window, which in practice made the test succeed all the time.
omar e985baa35d Combo: When peeking into the popup window for alignment we check if the window was active, which is more correct. (no known issue in current codebase, but we'll need that change for later)
omar 06bea369c0 DragDrop: Added IsDragDropActive() helper which is useful for binding to decide how to handle mouse inputs.
omar 563d04fdb1 TreeNode: node with the ImGuiTreeNodeFlags_Leaf flag correctly disable highlight when DragDrop is active. (, )
omar 49eed6e2d1 Version 1.54 WIP
omar 436cad4bca Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
omar d9034bf2d8 ListBox() changed signature of ListBox() to match Combo(). Still not very happy about not using const char** anymore. ()
omar e916310b2e Version 1.53
omar ed2105d4a2 Merge branch 'master' into navigation
omar 3849bb4470 Moving window doesn't use accumulating MouseDelta so straying out of boundaries keeps moved window at the same spot.
omar de5c304b49 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 8d54b1b7af Misc comments, removed duplicated IM_ARRAYSIZE macro in imgui_demo.cpp (it is now declared in imgui.h)
omar 1b86e7343f Renamed the emblematic ShowTestWindow() function to ShowDemoWindow(). Kept redirection function (will obsolete).
omar cead207535 Comments
omar 6c63c7a8b1 Various zealous warning fixes (thanks Clang). (Navigation branch)
omar ffb4f6ca8c Merge branch 'master' into navigation
omar 9cda86d55a Internals: Added IM_NEW, IM_DELETE helper macros (, , )
omar 983d8f5f8e Various zealous warning fixes (Clang).
omar 53b24ff79a Removed reliance on ImU64 type for the ImDrawList assert. ()
omar 1f26652944 Various zealous warning fixes (thanks Clang).
omar 1c1e490316 Merge branch 'master' into navigation
omar 46dcd9aa50 Columns: Made PixelsToOffsetNorm() properly symetrical to OffsetNormToPixels() ()
omar 471bcf8b5e Columns: Fixed dragging when using a same of columns multiple times in the frame. ()
omar e1a103b251 Drag and Drop: Disable tracking mouse button ownership when an external drag source is active, to make it easier to achieve drag and drop over multiple OS windows. ()
omar 8d21ee56d2 ImDrawList, Font: Fixed bug introduced in 531c11d5c7 ()
omar 287380261c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar c8c872c753 Internals: String functions uses size_t in their signature
omar 996dfb21cf ImDrawList: Added ImDrawListFlags for AA settings. ImDrawList doesn't directly depends on GImGui anymore.
omar d139bd088d Begin: Moved modal darkening draw block
omar 14cb8177d0 ImDrawList: Removed 'bool anti_aliased = true' final parameter of ImDrawList::AddPolyline() and ImDrawList::AddConvexPolyFilled(). Anti-aliasing is controlled via the regular style.AntiAliased flags.
omar 531c11d5c7 ImDrawList: Small refactor toward removing dependency on GImGui + PushClipRectFullscreen now correctly uses data provided by imgui which can takes account of DisplaySize + Removed static variable in PathArcToFast() which caused linking issues to some.
omar 230f826ef5 ImDrawList: Comments
omar 4c2514dc29 Merge branch 'master' into navigation
omar 6193f46af2 Active Modal window always set the WantCaptureKeyboard flag ()
omar b366dd9322 BeginPopup: Moved flags into individual BeginPopupXXX calls/implementations and outside of BeginPopupex(). Removed _NoResize flag which is extraneous with AlwaysAutoResize.
omar 55c0d2b9ab InputText: renamed ImGuiInputTextFlags_DisableUndo to ImGuiInputTextFlags_NoUndoRedo (, )
ibachar abaf347deb Added a flag for text input to disable undo / redo
omar b1d90b565d Columns: Fixed previous commit (wrong chunk commited) ()
omar b9391d1692 Columns: Internal: Columns have their no set of flags so NoResize can be setup by internal code. ()
omar 6497f5dc1b Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
omar 0c6e260f73 Drag and Drop: Added ImGuiDragDropFlags_SourceExtern to facilitate interfacing with WM_DROPFILES ()
omar 6effcf21d6 Drag and Drop: Source can also inhibit the preview on target, useful for extern sources that only exists for one frame. ()
omar 51433e26af Drag and Drop: Renamed to ImGuiDragDropFlags_SourceNoAutoTooltip to ImGuiDragDropFlags_SourceNoPreviewTooltip ()
omar eefea0588a Using the ImGuiWindowFlags_NoScrollWithMouse flag on a child window forwards the mouse wheel event to the parent window, unless either ImGuiWindowFlags_NoInputs or ImGuiWindowFlags_NoScrollbar are also set. (, )
Branimir Karadžić ac8e708c3e Fixed unused variable warning.
omar 45bca7851d Added ImGuiHoveredFlags_RootAndChildWindows helper for consistency with focused flags. ()
omar cc3192f347 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar f265e16b84 Revert "Scrollbar: Minor simplication of the code using InnerRect data." > Introduced sheering on the scrollbar rectangle because InnerRect isn't setup at this point.
This reverts commit 7ac1583411.
omar ddbcda8c1b Columns: Column width data is no longer lost while dragging toward the right side. (, )
omar ba71e1c0e4 Columns: Minor stylistic fixes. ()
omar f7c5f420e7 BeginChild() fix using negative sizes as window position because of erroneous clamping. It was hard to notice until we added asserts for it. ()
omar e8e84a6ad6 Columns: Added internal tracking of a few flag temporarily, to facilitate the work of third-parties who have columns patches. ()
omar 4ae5c7e227 Columns: Refactor: Moved ColumnsSet[] to window out of DC as they are persistent data for most + fix for pre C++11 compilers. (, )
omar b016215c80 Columns: Refactor: Not using statestorage lookup anymore. (, )
omar 3a31a75e3b Columns: Refactor: Renamed all members. (, )
omar 78320aa633 Columns: Refactor: Moved columns data into their own data structure. Minimum changes now to ease diffing. (, )
omar 027ffd91ea IsWindowFocused(): oops, that was bound to happen with loosely typed enums (this is sort of why I made both values identical - no direct side effects).
omar 16fb58984f Merge branch 'master' into navigation
omar 90d0b8b58b Navigation: minor sync to reduce drifts between changes
omar 8b59ed0708 Drag and Drop: Exposed some internals.
omar 7c7a7baf76 Merged miscellaneous small stuff (from nav/dock branches).
omar b174fcc9af Added IsAnyWindowFocused() (from Nav branch).
omar fa9327ccf8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_draw.cpp
#	imgui_internal.h
omar d0a1be0de0 Merge branch 'drag_and_drop'
omar ab049c6fc0 Drag and Drop: Fix merge for IMGUI_DISABLE_OBSOLETE_FUNCTIONS
omar 7faa5b16bb Tweak
omar 3ea5e67ba2 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
omar 02e0a078f4 Begin: Tidying up code to make it more readable.
omar 28bbf1ade6 Fixed ParentWindow setup which broke Modal windows (fix c65124f415)
omar d561a43a4d Drag and Drop: Drop target infer a fallback ID from the rectangle. Avoid Preview being accepted on drop frame when drop target has no ID. ()
omar e98df91dc4 Drag and Drop: Added ImGuiCol_DragDropTarget (, )
omar 7ec934f439 Drag and Drop: Comments
omar 052b6021dd Merge branch 'master' into drag_and_drop
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
omar 0a3db267c3 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_demo.cpp
#	imgui_internal.h
omar 6190ab0084 Renamed GetItemsLineHeightWithSpacing() to GetFrameHeightWithSpacing()
omar c22657985a Added GetFrameHeight() function (used to be SmallSquareSize internally)
omar ee7f1921e8 Internals: Added GetSmallSquareSize()
omar 08b72eb5c0 IsWindowFocused() refactor will flags. ()
Marked IsRootWindowFocused() as obsolete in favor of using IsWindowFocused(ImGuiFocusedFlags_RootWindow).
Marked IsRootWindowOrAnyChildFocused() as obsolete in favor of using IsWindowFocused(ImGuiFocusedFlags_RootAndChildWindows).
omar c65124f415 Internals: ParentWindow is now NULL for non-child windows and means what everyone expects.
omar f42d7b89e2 Internals: Removed misleading GetWindowParent() function. + renaming to clear confusing.
omar 4a555d35f0 IsWindowHovered(): split ImGuiHoveredFlags_FlattenChild into separate ChildWindows and RootWindow flags. Allowing more combination and a better symetry with IsWindowFocused() flags. ()
omar f93945540f Renamed ImGuiTreeNodeFlags_AllowOverlapMode to ImGuiTreeNodeFlags_AllowItemOverlap. (, )
omar 45f440bb7d Internals: Renamed ImGuiButtonFlags_FlattenChilds -> ImGuiButtonFlags_FlattenChildren, ImGuiButtonFlags_AllowOverlapMode -> ImGuiButtonFlags_AllowItemOverlap
omar 2b9d8ab91d Merge branch 'master' into drag_and_drop
# Conflicts:
#	imgui.cpp
#	imgui.h
omar 38bfdb357e Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar 9fd15defe4 Added an implementation of SetItemDefaultFocus() in the master branch for combo patterns to use and be more forward-compatible. ()
omar d1db229907 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
omar e3e0326ea9 Exposed BeginCombo() publicly.
omar eab6333a0b SetNextWindowContentSize() adjust for client->window size, but the fate of borders isn't really clear for now (until now we always tried to make borders not affect layout, so if we want a 200x200 fully visible space with borders and zero window padding user need to include the borders) ()
omar 7ac1583411 Scrollbar: Minor simplication of the code using InnerRect data.
omar a9b01600ac Internals: window->InnerRect includes removal of borders so it'll be easier to use from other locations.
omar b75acc21b0 Fix for border under title bar when WindowBorderSize == 0 and FrameBorderSize > 0
omar f72b002da8 Removed SetNextWindowContentWidth(), prefer using SetNextWindowContentSize(). Kept redirection function (will obsolete). (, , )
Branimir Karadžić e23083a080 Fixed warning: logical ‘and’ of equal expressions
omar 0365c524a2 ColorPicker4: Fixed returning true when holding mouse button on the sat/value/alpha locations. ()
omar a8c7b1a2a2 ColorEdit4: Made IsItemActive() return true when picker popup is active. ()
omar 871a5cecc1 Merge branch 'master' into navigation
omar c9f0275e22 Combo: Removed ImGuiWindowFlags_ComboBox flag. Moved internal window flags.
omar 457011660e Mouse wheel scrolling doesn't change speed inside Combo box (uses to slow down from 5 to 3) but instead slow down on window that are smaller than the scroll speed.
omar a263dce2f2 Combo: Cleanup. Removed unrequired uses of the _ComboBox flag (the test in EndChild() is from commit no 1!). We could remove ImGuiWindowFlags_ComboBox soonish.
omar 9ce51ad9f6 Fix bad merge
omar a6f37287d8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 7ac5f11b29 Standardizing the casing/format of internal window names + Misc comments.
omar befc58771c Combo: Recycling windows by using a stack number instead of a unique id, wasitng less windows.
omar e998c7d3e3 Combo: Moved functions (untouched).
omar a5e9392140 Combo: Added flags to BeginCombo() new api, removed explicit height, default to 8 instead of 7 items, allow popup height constraints via SetNextWindowSizeConstraints(), width expand if contents doesn't fit, popup reposition policy if it doesn't fit.
omar d9d231dc6b Internals: Renamed CalcSizeFullWithConstraint() to CalcSizeAfterConstraint() which is more appropriate + added explicit parameter to CalcSizeAutoFit() so it can be used externally.
omar 74f42baf3e Fixed scrollbar issue, source size when explicit was read before applying custom size constraints (followup to cc2c023880 etc.)
omar 541dfd7901 Combo: Comments + fixed missing lower window padding.
omar 9872297a84 Internals: Renamed FindBestPopupWindowPos() to FindBestWindowPosForPopup()
omar 7bf85db6c4 Drag and drop: Added COL3F payload for color without alpha overwrite. Exposed standard color payload types in imgui.h ()
omar b6b940c8ee Merge branch 'master' into navigation + removed extraneous g.NavDisableMouseHover test in IsItemHovered()
# Conflicts:
#	imgui.cpp
omar e118239f69 IsItemHovered() comments ()
omar 553b0fcf8f Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar ca0bb000ad Begin: Factored out a bit of code to CalcSizeContents()
omar f658edc72a Begin: Remove unnecessary usage of window_is_new flag, as both fields are zero on window creation.
omar 45466a8cf9 Internals: BeginCombo() added dummy ImGuiComboFlags.
omar 97edd42fc0 Indent(), Unindent(): Allow passing negative values.
omar 7f2b9ea4c0 Begin: Minor refactor following fcf652f8ee7267055e331bf7a0133ed477816f27. Merging the if (Collapsed) block with the main one.
omar 8dcc1a8a20 Begin: Sizing fixes regarding uses SetNextWindowSize() on individual axises.
omar e045eddd77 Minor tweaks. Using ImGuiAxis defines.
omar 92f7bd3605 Fixed 64-bit warnings.
omar cc2c023880 Fixed scrollbar issue, followup to beda5fc5a0 and 2df8fa95df.
omar e6215b6ca0 Merge branch 'master' into navigation + merge fix
# Conflicts:
#	imgui.cpp
omar 3c9f9a455e Internals: Cleanup FindBestPopupWindowPos() to be more digestible, since we are bounds to rework the logic there. No functional changes intended. FIXED TYPO.
omar 8959c64b33 Internals: Cleanup FindBestPopupWindowPos() to be more digestible, since we are bounds to rework the logic there. No functional changes intended
omar 20c7aab60c Exposed GetOverlayDrawList(). (~#545, ~#530)
omar 6deb865f78 Nav: Merge fix.
omar 2fc6a82665 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar 8f41508c52 Begin: Move the code that update the Appearing flag above the BeginDocked() branch.
omar 2fc9a2e6e7 Fixed nav branch merge issue.
omar beda5fc5a0 Fixed scrollbar enable/disable calculation when size is modified programmatically. This is the generalization of the fix in 2df8fa95df.
omar ecacaf7f2d Lower-right resize grip only appears when hovered. ()
omar 3b7e4eaf38 Comments about ImGuiWindowFlags_ResizeFromAnySide. Removed hovering color. May need its own color. ()
omar 531e559e49 Windows can be resized from their borders when ImGuiWindowFlags_ResizeFromAnySide is set. () The interaction is currently unsatisfying because we can only reach a window from its inner rectangle (because of HoveredWindow filtering).
omar e103fe8c1f Tweak four-corners resize grip code. Added ImRect::FixInverted() helper. ()
omar 90ae1c59c4 Added ImGuiWindowFlags_ResizeFromAnySide flag and code to resize from any of the 4 corners (only 2 corners enabled). ()
omar 729333293c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar 0f119865a6 Comments about ImGuiWindowFlags_ResizeFromAnySide. Removed hovering color. May need its own color. ()
omar 5686c72bbd Windows can be resized from their borders when ImGuiWindowFlags_ResizeFromAnySide is set. () The interaction is currently unsatisfying because we can only reach a window from its inner rectangle (because of HoveredWindow filtering).
omar b9dc0caee3 Tweak four-corners resize grip code. Added ImRect::FixInverted() helper. ()
omar 2ca4f9e862 Added ImGuiWindowFlags_ResizeFromAnySide flag and code to resize from any of the 4 corners (only 2 corners enabled). ()
omar 364251146b Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 77d1a4b636 Fixed a one frame glitch, when window claiming focus themselves on appear, the title bar wouldn't use the focused color on that frame.
omar 16d9fa30b2 Merge branch 'master' into drag_and_drop
omar 5f7cd7fb1c Internals: Splitter Behavior doesn't show a border. ()
omar be6384eb2a Style: Tweaked default WindowRounding value from 9 to 7 ()
omar 6ea744d8f4 Drag and Drop: Added DragSource from color square. Added DragTarget on ColorEdit4 widget. ()
omar 81cbaef806 Merge branch 'master' into navigation
omar b513fdce48 Scrolling: SetScrollFromPosY() tweak to match change in a0d53fee81084a547bf21f46e736ea89f79fffb5 with similar desirable jump/discontinuity at each limit to skip the (ItemSpacing>WindowPadding) difference (followup to 0e5b64ecd2, )
omar c36e586cce Style, Scrolling: Fixed padding and scrolling asymetry where lower/right sides of a window wouldn't use WindowPadding properly + causing minor scrolling glitches.
omar 25c159fac8 Internals: Removed unnecessary duplicate scrolling code + added extra infos to Metrics window.
omar 52e475230f Settings: Internals: Renaming.
omar 2e1013a0c6 Settings: Internals: Simplifying code a bit. Creating Settings structure during first save. Windows where ImGuiWindowFlags_NoSavedSettings was late toggled will save settings correctly. ()
omar 7ae71e4984 Settings: Internals: Added FindSettingsHandler()
omar 35eb5c5c99 Settings: Internals: Exposed FindWindowSettings(). Simplified some code.
omar 963259d128 Settings: Internals: Renamed ImGuiSettingsWindow to ImGuiWindowSettings.
omar 63712d5f5c Merge branch 'master' into drag_and_drop
omar 9191b17218 Merge branch 'master' into navigation
omar 4a43632163 Build fix
omar 1a8a7c9d17 Settings: Import old style .ini file
omar e5ebe42207 Settings: Make ImGuiWindow settings always first in the list.
omar f3ec608c19 Settings: Initializing ImGuiSettingsWindow so external users don't end up with uncleared data. Exposed MarkIniSettingsDirty() in imgui_internal.h
omar 7e2d0d734c Settings: basic refactor so that additional data structures can be loaded/saved. Parser/saver is still the minimum viable poor-man parsing.
omar d552cabd15 Settings: Internal renaming of structure and fields names.
Emmanuel Benoît 77a310736d Horizontal mouse wheel support
This patch adds support for the horizontal mouse wheel in ImGui. It
affects windows that can be scrolled, as long as the Ctrl key is not
being pressed.

The scrolling speed has been set empirically so that it matches the
scrolling speed on the Firefox browser when the horizontal wheel is
used.

Internally, it adds a MouseHorizWheel to ImGuiIO, which is then used in
NewFrame to scroll the current window.

The SDL/GL2, SDL/GL3, GLFW/GL2 and GLFW/GL3 examples has been modified
to use it.
omar ade09b9e3c Settings: Basic internal refactor to have functions for saving from/to memory (not exposed)
omar 532f564fd3 ImGuiTextBuffer: Renamed append() helper to appendf(), appendv() to appendfv(). Added reserve().
omar d9c5d72962 ImGuiStorage: Added BuildSortByKey() helper to rebuild storage from stratch.
omar 46e994de4e Nav: Do not clear last navigation id stored in a hidden child window. ()
omar 4e3c7f1557 Nav: Exposed NavInitWindow() in imgui_internal ()
omar f5c47faee8 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 6bd3b45b34 Sisyphus says: tweaked comments about not using old-style OpenGL examples (, etc.)
stfx 6d3cfba834
Add Slider hover color just like Drag
I feel like there should be hover color options for each different control instead of the grouped frame color to make it usable for everyone. This also would not reduce performance as all controls already check for hover state as required by the ImGUI::IsHoveredItem() API.
omar 7763ab3fcc Menu bar: better software clipping to handle small windows, in particular child window don't have the minimum constraint added in e9a7e73bba so we need to render clipped menus better.
omar b618629d99 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 7d09a0ae99 Menu bar: better software clipping to handle small windows, in particular child window don't have the minimum constraint added in e9a7e73bba so we need to render clipped menus better.
omar aafa6cece5 Tweak expression to be less weird (how did that ever happen?)
Giuseppe Barbieri 21b456e567
Update imgui.cpp
omar 68b26b4867 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 176d8fbe74 Fixed unreferenced variable warnings.
omar 302757447a Internals: Added SplitterBehavior(). ()
omar 195abc3d17 Begin: Fix border size latch when rounding uses Child or Popup value. ()
omar 2543807e56 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 3f5b2a3fe3 Exposed ImDrawCornerFlags, replaced occurences of ~0 with an explicit ImDrawCornerFlags_All. Inversed BotLeft (prev 1<<3, now 1<<2) and BotRight (prev 1<<2, now 1<<3).
omar 7f447c8270 Color picker: Tweak vertex shading code, since we aren't shading between PrimReserve and PrimVert the code can be expressed more naturally. ()
omar dc2768503f Fix for drag and drop branch.
omar 92212b17aa Merge branch 'master' into drag_and_drop
omar 9848a7023b Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
omar abbf836fd0 Style, Begin: removed ImGuiWindowFlags_ShowBorders window flag. Borders are now fully set up in the ImGuiStyle structure (see e.g. style.FrameBorderSize, style.WindowBorderSize). Use ImGui::ShowStyleEditor() to look them up. (, fix , , ref , ref )
omar c433bc971f Reorder fields for consistency.
omar 39137ccc3e Style: renamed ImGuiCol_ChildWindowBg to ImGuiCol_ChildBg. ()
omar 9a44d447cd NewFrame() now asserts if neither Render or EndFrame have been called. Exposed EndFrame(). Made it legal to call EndFrame() more than one. ( etc.)
omar 538a704143 NewFrame(): using literal strings in the most-frequently firing IM_ASSERT expression to increase the odd of programmers seeing them (especially those who don't use a debugger).
omar d211a0e338 Merge branch 'master' into navigation (with style breakable)
# Conflicts:
#	imgui.cpp
#	imgui_draw.cpp
omar 4022ada843 Merge branch 'master' into drag_and_drop
omar 8a7f03cbf9 Combo: Offset popup position by border size so that a double border isn't so visible. ()
omar d7af1a218e Style: Added PopupRounding setting. ()
omar 067605052d Fix IsItemHovered() returning true for non-title bar hidden items that are clipped due to window collapsing logic. Fix 27fd1b913b. ()
omar 6f7b1bf2e1 Internals: Renamed ImGuiWindow::Accessed to WriteAccessed.
omar 58345b11e1 Style: Removed ImGuiCol_ComboBg in favor of combo boxes using ImGuiCol_PopupBg for consistency. ()
omar 29e0078b66 Internals: Window minor internal renaming + added WindowRounding latch.
omar bd4bc929ce Style: renamed style.ChildWindowRounding to style.ChildRounding, ImGuiStyleVar_ChildWindowRounding to ImGuiStyleVar_ChildRounding.
omar da2be7bbdc Style: ScaleAllSizes() helper rounds down every values so they are aligned on integers.
omar 834fa52c8e Columns: Added ImGuiColumnsFlags_GrowParentContentsSize to internal API to restore old content sizes behavior. (, )
omar 7746dd104c Merge branch 'master' into drag_and_drop
omar 44c590393c Merge branch 'master' into navigation
omar 29d962069d Internals: Updating condition/allow flags with a function.
omar 4ad414c8d4 Internals: Window: Store whether the windows has a close button (we need that info for window/tabs dropping preview calculation)
omar 7c4be0a000 Internals: Added BringWindowToFront(), BringWindowToBack() helpers.
omar 6817f3a3d9 Merge branch 'master' into navigation
omar e9a7e73bba Windows with MenuBar have a larger minimum height to avoid artefacts (I fixed most of the vertical/horizontal artefacts, but the ones in rounded corners were too hard to fix).
omar f36037b384 Menu: Fixed minor rendering issues on the right size with rounded window when resizing a window small.
omar 9b82d9fbef Scrollbar: Minor graphical fix for when scrollbar don't have enough visible space to display the full grab.
omar f5bdf443c9 Minor comments, tweaks
omar 5ea6e80da1 Make it possible to use SetNextWindowPos() on a child window. Useful internally.
omar 44b761b308 Merge branch 'master' into drag_and_drop
omar 27fd1b913b Made it guaranteed by API that after calling Begin() the last Item represent the title bar. ()
omar ae060b1d67 Merge branch 'master' into drag_and_drop
omar 64031852de Merge branch 'master' into navigation
omar 64e79035d5 Scrollbar flicker fix for menus/popups (fixes 4d00dd8326 and 2df8fa95df). Hopefully right this time.
omar 6001d9c7a4 Columns: Clipping columns borders on Y axis on CPU because some GPU drivers appears to be unhappy with triangle spanning large regions (not sure why tbh). ()
Demo: Columns: Adding a billion of extra lines and using clipper.
omar ffad688fc8 Drag and Drop: Added payload->IsPreview() to user can render their custom preview while handling overlapping drop targets. ()
omar 852ece3a0e Fixed build (3e06450d27 not meant for master branch, but ok)
omar 2275cb8b83 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 3e06450d27 Internals: Added ArrowButton() helper.
omar 7908cce25f Drag and Drop: Added internal BeginDragDropTargetCustom() convenient to avoid submitting dummy ItemAdd. ()
omar 4d00dd8326 Fixed scrollbar flickering on/off when uncollapsing a window (fixes 2df8fa95df)
omar 30bf40195b io.OptNoCursorBlink -> io.OptCursorBlink ()
omar 669498ff26 Added io.OptNoCursorBlink option to disable cursor blinking. (). Renamed io.OSXBehaviors to io.OptMacOSXBehaviors. Should affect users as the compile-time default is usually enough. (, )
Branimir Karadžić 9daac64ff8 Clean g.WindowsById storage on shutdown.
omar 06075f20ba Merge branch 'master' into navigation
omar ba09de3a39 Begin: Fixed appending into a child window with a second Begin() from a different window stack querying the wrong window for the window->Collapsed test.
omar 8451855a30 ButtonBehavior: Fixed ImGuiButtonFlags_AllowOverlapMode to avoid temporarily activating widgets on click before they have been correctly double-hovered. (, )
omar 4b94738c7e Drag and Drop: Drop target rectangle goes out of clipping range ()
omar b1653cd361 Drag and Drop: Allow NULL payload (since type only can be useful). ()
omar a297cbafdb Merge branch 'master' into navigation
omar 2df8fa95df Fixed vertical scrollbar flickering/appearing, typically when manually resizing and using a pattern of filling available height (e.g. full sized BeginChild). THIS IS A GREAT FIX, this glitch was nasty and annoying (and yet somehow nobody reported it?). Hopefully haven't broken anything else...
omar a4cc3d4637 Minor tweaks/comments. Note that the reordering the one subtraction caused subtle havoc before the patch in 9ac8820ee2.
omar 9ac8820ee2 Fixed non-pixel aligned bounding box of window resize grip, / which triumphally led to any re-arrangement of operations inside the resize grip code outputting non-exact size_target values which led to unstable window position because clamping code uses size in a subtraction, etc etc. Lovely how a whole system can be made to act weird with a single bad input.
omar b6504b8eee Drag and drop: Handle overlapping drag target priorities given their surface, which appears to make most sense for drag and drop operations.
omar 2ab27be3de Child window with MenuBar use regular WindowPadding.y so layout look consistent in child or in a regular window.
omar 41862b8c0e ButtonBehavior: Fixed ImGuiButtonFlags_NoHoldingActiveID from incorrectly setting ActiveIdClickOffset, which probably have no known effect, but it is more correct this way. ()
omar 1870738880 LowerBound() minor tweaks
omar 571b08f315 Internal: FindWindowByName() faster and doesn't touch every windows
omar 2c7ba21417 Fixed auto-resize allocating too much space for scrollbar when SizeContents is bigger than maximum window size (fixes c0547d358d) ()
omar 0d4c320f88 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_draw.cpp
omar f0b4097c54 Begin: Simplified code and fixed a bug where appending into a window a second time (from a remote window) would incorrectly overwrite RootWindow with the current window in the stack. Our docking code uses this pattern.
omar de1e7dc088 Drag and Drop: Moved internal fields out of public sight. ()
omar 8b725c94cb Drag and Drop: Rework internal to allow overlapping targets ()
omar 16a5da9521 RenderTriangle() minor tweak to align Left/Right and Up/Down arrow extents visually
omar 553bdeedf7 Drag and Drop: Made it legal to not call SetDragDropPayload() between BeginDragDropSource() and EndDragDropSource(). ()
omar 3461a2f296 Merge branch 'master' into drag_and_drop
omar 982ce50b37 IsWindowHovered() returns true when moving window (, )
omar ff4d4ca651 IsWindowHovered(): Added ImGuiHoveredFlags_FlattenChilds flag. Made IsRootWindowOrAnyChildHovered() obsolete in favor of IsWindowHovered( ImGuiHoveredFlags_FlattenChilds) (, )
omar 803ac3a5c6 IsWindowHovered() Fix behavior when an item is active to use the same logic as IsItemHovered() (, )
omar 66f42324ad Drag and Drop: Added ImGuiDragDropFlags_SourceNoHoldToOpenOthers flag.
omar 63f6f2dd13 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar 6ab20ff9bf Minor tweaks to the user guide.
omar e55caf0b95
Merge pull request from elect86/patch-1
Minor fix typo
omar 7f06d385a1 Added assertions and comments for incorrect use/understanding of IsWindowFocused() etc. functions
Giuseppe Barbieri 9e3f9fc2dd
Update imgui.cpp
omar 5956fff7e2 Drag and Drop: ImGuiButtonFlags_PressedOnDragDropHold focuses the target window.
omar a810619555 Drag and Drop: Added support for drag and drop hold-long-to-open for CollapsingHeader() and TreeNode(). Open only!
omar 1d7d8f8574 Merge branch 'master' into drag_and_drop
omar b13d281356 Maintaining ActiveIdTimer and HoveredIdTimer (the later is useful for drag and drop, both will be of course for creators of custom widgets)
omar d46772b429 Comments
omar 0e775807b4 Drag and Drop: Added a mechanism to allow widgets with no identifiers (such as Text/Image) to be used with BeginDragDropSource() given the explicit ImGuiDragDropFlags_SourceAllowNullID flag.
omar b5f714e9f9 Drag and Drop: made BeginDragDropSource() clear the IsItemHovered() by default, added a flag to keep it.
omar c5536e49ef Drag and drop API experiment
omar 17dd8e7c30 Merge branch 'master' into navigation
omar b9ebb34a04 Nav: ColorButton: Fixed a case of not using local 'hovered' flag directly, messes with some of my drag and drop work, and I can't find/understand the reason why this was left as is (there _was_ a reason at the time but it appears to be obsolete now?)
omar f962ca0b01 ColorTooltip: Resize ColorButton to align better with text, now that ColorButton provides a text baseline (0260fdd1c6)
omar edafbcd630 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar c503a50cff Styles: Moved Classic colors code to imgui_draw.cpp. Sneakily added a StyleColorsDark() function.
omar 77df1ba9e0 Version 1.53 WIP
omar b422f35872 IO: Tracking extra mouse dragging data which is convenient for implementating various manual drag and drop patterns.
omar c0b366b316 Merge branch 'master' into navigation
# Conflicts:
#	imgui.h
omar 9f200d10d5 Version 1.52
omar cc78e9a213 Merge branch 'master' into navigation
omar 267ea506de Begin: Fix for unused "Debug" (fix for 3b83cd24f5 )
omar 5afee1c6f3 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar 3b83cd24f5 Begin: Moved some code inside of the big if (first_begin_of_the_frame) scope
omar 3656f2c769 NewFrame: Allow MovedWindow setting the ImGuiWindowFlags_NoInputs after moving has started in order to be able to detect windows below it, which is useful for e.g. docking mechanisms.
omar a6edd10ee6 NewFrame: Removed unnecessary call to FindHoveredWindow() and simplified code (went through this multiple times, hopefully haven't broken anything)
omar 6243252d5a Internal: BeginTooltipEx() in imgui_internal.h
omar f10a1d7b9e Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar d42f6bb6cc Merged a bit of code from Navigation branch to ease further merging (InnerRect is currently not required in the Master branch)
omar c432fcf2bb Minor renaming.
omar 549f9e3f03 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar daef33e268 Comments about mouse setup and clearing HoveredWindow when mouse down isn't owned by imgui (will affect some future hovered test and drag'n drop patterns) (, , )
omar 4faf99eff5 Added most basic form of Disabled flag to disable interactions (but visuals aren't altered), in imgui_internals.h, undocumented/unsupported (, )
omar fc25881207 Merge branch 'master' into navigation
omar efcd53a0c3 Removed direct dependency on sprintf() in imgui.cpp ()
(NB: imgui_demo stills uses it)
omar 1f3372b7f1 ImFormatString, ImFormatStringV(): clarifying specs so that passing a NULL buffer should return the desired length. ()
omar 8fd5620277 Renamed IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCS to IMGUI_DISABLE_WIN32_DEFAULT_CLIPBOARD_FUNCTIONS/IMGUI_DISABLE_WIN32_DEFAULT_IME_FUNCTIONS for consistency. (ref , , )
omar 7d2cd0e6ff Added IMGUI_DISABLE_FORMAT_STRING_FUNCTIONS support in imconfig.h ()
Patrick Doane 70cb427469 Add missing CloseClipboard call
omar d513546325 Merge branch 'master' into navigation
omar 5b062c4c29 Fixed typos
omar 0260fdd1c6 ColorButton: As a small convenience, provide a text baseline.
omar e9ff7162bc ColorButton: Fixed rendering color button with a checkerboard if the transparency comes from the global style.Alpha and not from the actual source color.
omar 97bf2131e2 Fixed calling SetNextTreeNodeOpen() on a collapsed window leaking to next frame.
omar 20983773f1 Nav: MainMenuBar now releases focus when user gets out of the menu layer. WindowingTarget when applying focus to a window with only menus automatically sets the layer. ()
This is enough for basic mouse/gamepad usage, but 1- previous window gets an unfocused title bar color temporarily, 2- generaly for gamepad and especially keyboard we need much more to get this done right
omar 025d4f0c97 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar e7922b3fa0 Factorized some code (+ declared as static function without namespace, a pattern with the Nav branch has started to use)
omar 2ef2c104a1 Begin: Minor tweaks
omar be12f8c55d Nav: Fixed handling of ImGuiNavInput_KeyMenu so it doesn't set g.NavWindowingTarget at all, reducing size effects + handling menu layer toggle on Alt Release ()
omar 6f0aa766e1 Nav: Added internal ImGuiNavReadMode_Released test for key releases.
omar d769e2515a Merge branch 'master' into navigation
omar 1bc1751670 MenuItem(): Tweaks to mimic exact spacing of BeginMenu() when inside a menu bar, which is a little misleading imho but may be useful. ()
omar b177f2432d MenuItem(): Tweak to not draw over all horizontal space when in horizontal layout mode. ()
omar 5fa81f2a26 Nav: Added ImGuiNavInput_KeyMenu aside from ImGuiNavInput_PadMenu as it is one differenciator between pad and keyboard that's very annoying with the keyboard.
Remove the move/resize behavior that appears than holding the button for a while. ()
omar 1c5b3fb1d2 Merge branch 'master' into navigation
omar f7259e60ee Comments
omar 23b9060468 Nav: Honoring ImGuiItemFlags_NoNav which is used by color picker ()
omar e4bb9102f9 Merge branch 'master' into navigation
omar 6ab737a4bb Popups: Fixed right-click to close popups not handling modal windows properly. (~#439)
omar aca23fd3f0 Popups: similarly to previous commit, we fix reopening a popup within a popup stack from truncating the whole stack. This is done by properly refocusing the lower level popup. (~#439)
omar 59a89774d7 Popups: fixed CloseInactivePopups() so that right-clicking to close one level of popups in a popups stack won't close the whole stack. This is done by properly refocusing the lower level popup. Fixes 87ae40843c (~#439)
omar 43df7eb5ea Added OpenPopupOnItemClick(); helper which mimic BeginPopupContextItem() but doesn't do the open.
Made the color popups uses this standard function so they handle reopening a context menu.
omar 0ea66dc260 Fixed bad merge from Master
omar 1172ff62e1 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_demo.cpp
#	imgui_internal.h
omar 3cc10d25a9 BeginPopupContextItem(), BeginPopupContextWindow(): Using newly introduced IsItemHovered() flags to allow reopening another context menu (over same or not same item) with right-click. () (+1 squashed commits)
omar 695ea45fca IsWindowHovered(): Changed default behavior to now return false is a widget from another window is active + Added support for ImGuiHoveredFlags_AllowWhenBlockedByActiveItem. (relate to drag'n drop idoms: )
omar 564ff2dfd3 IsItemHovered(), IsWindowHovered(): added flags to enable various and more specific behavior. Will enable improvements for popups/context menus and drag'n drop. (relate ~#439, , , )
The legacy confusing IsItemRectHovered(), IsWindowRectHovered() can be completely removed now.
Changed IsWindowHovered() behavior with default parameter: it now return false is the window is blocked by a popup.
Demo: Added tests for those two functions.
omar d29a6a5a5a Moved IMGUI_DISABLE_OBSOLETE_FUNCTIONS block lower in the imgui.h file so obsolete functions can use flags. Also sane to quarantine them outside of the respectable area.
omar e6f06627e9 Made the ImGuiWindowFlags_NoMove flag inherited from parent to child, so in a setup with RootWindow (no flag) -> Child (NoMove flag) -> SubChild (no flag) user won't be able to move the root window by clicking on SubChild. ()
omar 3b485cda51 Fixed a bug allowing to move a _NoMove window from a child that doesn't have the flag. ()
broken by e56eba44fe ()
omar 87ae40843c Popups: popups can be closed with a right-click anywhere, without altering focus under the popup.(~#439)
omar 853018dd4d Popups: Fixed a bug introduced in 1a35766356 which made the BeginPopupContextXXX functions create popups without border. (nb: all that border mess is going away in styling clean up)
omar 5f7299e15a Refactor EndFrame() code that process focusing window with left mouse button. This commit should be no-op.
omar 51eed2f257 Merge branch 'master' into navigation
omar 5b699517d4 Internals: PaintVerts** renamed to ShadeVerts**, moved to imgui_draw.cpp and exposed in imgui_internal.h (+1 squashed commits)
omar 22977ffedb Documentation: Extra comments + tweaks to make usage of long-line more bearable.
omar 938f1b720f Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 370a48c10b Internals: RenderCollapseTriangle() -> RenderTriangle(), takes a ImGuiDir
omar a03093b2d4 CollapsingHeader(bool*) variant: fixed for IsItemHovered() to work properly in the nav branch.Basically the close button now has to use ItemAdd() to be navable into, which overwrite the IsItemHovered data. (, )
omar 29a652adee CollapsingHeader(bool*) variant: fixed for IsItemHovered() to work properly in the nav branch.Basically the close button now has to use ItemAdd() to be navable into, which overwrite the IsItemHovered data. (, )
omar a126c702d9 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar ef3f87eec5 Internals: ButtonBehavior: made ImGuiButtonFlags_PressedOnClick and ImGuiButtonFlags_PressedOnDoubleClick set the click offset correctly + hold on g.ActiveId so Held state can be reported. Added ImGuiButtonFlags_NoHoldingActiveId flag to disable the later.
omar bf778ebb7e Checkbox: Using checkmark. MenuItem: Tweaked checkmark, thicker.
omar d96b6ecf88 Merge branch 'master' into navigation
# Conflicts:
#	imgui_demo.cpp
omar 03b76bf05b Begin: Marked 5 parameters version of Begin() as obsolete. Now waiting for a riot to happen!
omar 78a85ba3fe Begin: Work toward obsoleting the 5-arguments Begin() overload. Internal BeginEx() becomes the normal public Begin() again! (4)
omar 2739b6ebcd Begin: Work toward obsoleting the 5-arguments Begin() overload. Removed bg_alpha from internal BeginEx(). (3)
omar 4aa9d2089d Begin: Work toward obsoleting the 5-arguments Begin() overload. Removed size_on_first_use from internal BeginEx(). (2)
omar 55d873875e Begin: Work toward obsoleting the 5-arguments Begin() overload. (1)
omar 1a35766356 BeginPopupContextItem() now supports a NULL string identifier and uses the last item ID if available. For interactive items (that have an ID) this works! For non interactive items we assert.
omar c76f014292 Fix IsItemHovered() issue on child by temporarily reverting 344d48be31. This is not the ideal solution. (Fix )
omar af565ea828 Nav: InputTextMultiline: Fixed navigation/selection. Disabled selecting all when activating a multi-line text editor. ()
omar 7ea52ac1e4 Nav: InputTextMultiline: Fixed navigation/selection. Disabled selecting all when activating a multi-line text editor. ()
omar 82a27fd3aa Nav: InputText: Fixed using Up/Down history callback feature when Nav is enabled ()
omar b70c2fa887 Nav: Internals: Moved some internal code to namespace, comments
omar ae1866c424 Nav: NavProcessItem() updates current NavLayer. Basically we're hearing toward rebuilidng nav info from an id. ().
omar 97851f7376 Nav: NavProcessItem() computes window-relative rectangle using own Window rather than NavWindow. Not sure what it may mean for child-flattened-nav (disabled). ()
omar 7d14262202 Nav: SetFocusID() update NavWindow and NavRectRel just as we get them. Needed by upcoming commit, committing separately as I'm curious if it has any side-effect. ()
omar 83416fa5da Merge branch 'master' into navigation
omar d761825cfb Nav: Renaming a field + Comments.
omar ce7b04e8b9 Removed apparently unncessary code in InputFloatN() and InputInt().
omar db5f1b79cd Nav: ButtonBehavior() keep _displaying_ NavId item as howered when refocusing or moving window, which is consistent with IsItemHovered() and reduce noise/flicker ()
omar c42baf392a Reluctantly exposed GetActiveID(), GetHoveredID() in imgui_internal because the demo code will need it.
omar 53780a4fcc Nav: Shallow tweaks.
omar f852b9a52a Exposed Scrollbar() in imgui_internal.h and removed a bool arg
omar b667d5a9e7 Nav: Internals: Renamed ImGuiButtonFlags_NoNavOverride to ImGuiButtonFlags_NoNavFocus + fixed a theorically missing test in ButtonBehavior() ()
omar 0371219222 Nav: Internals: Renamed SetActiveIDNoNav -> SetActiveID() and old SetActiveID() -> SetFocusID(), both functions needs to be called when both are desirabled. ()
May break code relying on imgui_internal.h, relying on nav and not calling ButtonBehavior().
omar 8b095e483b Internals: Moved SetNavID() and renamed casing to be consistent with stuff exposed in imgui_internal.h
omar 4be967823f Exposed Scrollbar() in imgui_internal.h and removed a bool arg
omar 48498b337d Internals: SetActiveID window cannot be NULL
omar 4548bcb5c9 Nav: commiting shallow bits to reduce noise from working copy/upcoming commit.
omar 17519c313a Nav: Extract part of NavUpdate() into a saner NavUpdateWindowingTarget() ()
omar b05b31e690 Nav: Made NavWindow always refresh from NavId so we can lazily retrieve the window for user functions that don't have it. This is not required by current commit but I'd rather test it earlier. Idea: eventually if we switch to 64-bit identifiers we could reserve e.g. 20 bits to store a simplified window identifier so we can always retrieve a window from an id. ()
omar f0d437dd9c Nav: SetActiveId() uses SetActiveIDNoNav() to avoid duplicating logic. ()
omar 2047c58efb Nav: Extract part of NavUpdate() into a saner NavScrollToBringItemIntoView() ()
omar 7a14d7dfdc Nav: More consistently drawing a (thin) navigation rectangle hover filled frames such as tree nodes, collapsing header, menus. ()
omar 3833f1f7a2 Merge branch 'master' into navigation
omar 43b4a81b3e Rnamed AlignFirstTextHeightToWidgets() to AlignTextToFramePadding(). Kept inline redirection function (will obsolete).
omar c6e370a77a TreeNode: Added ImGuiTreeNodeFlags_FramePadding flag
omar 69dd895358 Nav: Renaming NavInitDefaultRequest -> NavInitRequest
omar 4d83078885 Nav: Moving code next to its peers
omar d2975115cd Nav: Caching into g.NavAnyRequest to minimize hot path cost (and so we can add many more request sources)
omar d91b093be6 Nav: Minor tweaks in NavProcessItem() used by ItemAdd()
omar c3105919ba Nav: Minor tweaks also toward removing processing from ItemAdd()
omar d16309ca77 Internal: ItemAdd() minor shallow tweaks
omar 64ce83b9ed Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 042153d254 Internal: ItemAdd(), IsClippedEx(): removed unnecessary indirection for ID parameter
omar acb6f12d2c Removed extraneous calls to GetCurrentWindowRead() when we already have a ImGuiContext. Internal RenderXXX functions also don't need to write into the Accessed field at all.
omar 6e1199c603 Merge branch 'master' into navigation
omar f451785c9e Nav: Shuffled code in ItemAdd() so that NavProcessItem() may have access to LastItemId (will be required by tabbing)
omar e12cfa9dfd Nav: Minor midying up and comments,
omar 40df7a5155 Nav: Removed possibly redundant test prior to calling NavProcessItem() from ItemAdd()
omar a77dd02e8a Nav: Moving code next to its peers
omar f5bd4663dd Nav: Moving the big chunk of code from ItemAdd() to NavProcessItem()
omar 59c6f35bf6 Added ActivateItem(), GetItemID() functions.
omar 80c4e2fe7b Nav: Tidying up activation mechanism so that setting NavActivateId can trigger buttons.
omar d851775c80 ColorButton: Reduced bordering artefact that would be particularly visible with opaque Col_FrameBg and FrameRounding enabled.
omar 726dcf0dd2 TextUnformatted(): minor tweak
omar a0d724b450 Made AlignFirstTextHeightToWidgets() saner and faster (still disliking its name very much!)
omar a3d0755181 Merge branch 'master' into navigation
omar f326fac64a Nav: Menus and popups now have move request wrap around vertically (using the move request forward thing added recently). ()
omar a8788e51a7 SetKeyboardFocusHere() added assert to prevent passing values smaller than -1 as we may have to outlaw them (I think nobody was using that)
omar 63cd2bf9b1 Removed obsolete comment.
omar 3ddcdcf6e7 Merge branch 'master' into navigation
omar 67ac7da30f Styles: Added ImGuiStyle::ScaleAllSizes(float) helper to make it easier to have application transition to e.g. High DPI with a matching style.
omar a56b71e866 Nav: Added code to render thin highlight type. ()
matiTechno b36a043bbf typo
omar 6ea90af6b7 Nav: Highlight clipped within host window then extruded out. ()
omar cb4e6c8212 Nav: Selectable(): activating selectable also sets NavId + removed the MouseDelta test (added in 43ee5d73e9, ) as I don't think it is needed. ()
omar 64a51327d3 Nav: Added NavMoveResultParentId internal info to record when the parent/context of a given NavId. Useful for various algorithms (currently looking at range selection stuff) ()
omar 74da533c93 Nav: Added NavJustNavigatedId internal info to record when we land on a given item after a navigation request, useful for various algorithms (currently looking at range selection stuff) ()
omar 7f58bb03c1 Changed the internal name formatting of child windows to use slashes as separator, more readable.
omar cbc9730798 Metrics: Draw window bounding boxes when hovering Pos/Size. List all draw layers, trimming empty commands like Render() does.
omar 491edfd8d8 Nav: Fixed a crash introduced yesterday.
omar 0046c618b0 Nav: Allow to collapse tree nodes with NavLeft and open them with NavRight (, )
omar ecd72cc0c7 Nav: Disabled the final axial check when considering candidates in most situations except menubars.
It's definitively undesirable inside Menu as we want to catch nav request failures reliably.
I think it may be considered as an option if we find this desirable i some circumstances. Right now ideally I'd remove it totally but with current scoring setup, without it we can't easily reach the Window Close button. ()
omar 88a354585a Nav: It's now possible to navigate sibling of a menu-bar while navigating inside one of their child. If a Left<>Right navigation request fails to find a match we forward the request to the root menu. (, )
Currently the sibling menu is isn't automatically opened, that's still left to it (and even that can be anoying in Windows when the first menu-item is a child menu)
omar f4e4c38705 BeginMenu(): fixed logic to distinguish vertical menu from one layed out in a menu bar. Makes MenuItem() in a regular window behave more consistently, and this will be also needed by upcoming menu-navigation changes in the nav branch. (, )
omar 9912f7eef8 BeginMenu(): fixed logic to distinguish vertical menu from one layed out in a menu bar. Makes MenuItem() in a regular window behave more consistently, and this will be also needed by upcoming menu-navigation changes in the nav branch. (, )
omar cf3b21179b Nav: Comments
omar 5a9ebeca9e Nav: Fix typo from 9712a81f85
omar bfaa426f7f Nav: Minor tidying up (adding local variables to be a little more sane).
omar 8a5a29f0be Nav: Renamed internal field.
omar 9712a81f85 Nav: Rectangle rectangle stored per window and per layer as well. Makes things simpler, allows enable us to visualize more data.
omar 54eb4c485e Nav: Marked misleading/broken code that will never execute.
omar e3c89aeb10 Nav: Fixed menuitems/selectable on menu layer (layer 1) from storing themselves in wrong layer of LastNavIds when hovered.causing inconsistencies and bugs when hovering menu with mouse then pressing ALT to return to layer 0).
NB: this is not a new bug introduced by the previous commit (which is related to nav layers), bug has been there for a while. ()
omar 9737efb2f1 Nav: Store per-window last nav id also per-layer so we can easily query them for menu navigation code. ()
omar 8a814487fe Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar fba9353c60 BeginMenu: Shuffling braces around to clarify flow
omar cf308f4039 Nav: Fixed SetItemDefaultFocus from stealing default focus when we are initializing default focus for a menu bar layer ()
omar f4398226cc Nav: Support for fallback horizontal scrolling with PadLeft/PadRight (nb: fallback scrolling is only used to navigate windows that have no interactive items). ()
omar 30b1d85962 Nav: Commiting some better organized Debug helper because this going to stay for a bit.
omar 1f7f54e196 Removed extraneous test.
omar df366b230e ColorPicker4: Use nav flag to provide a slighly better experience when using navigation (, )
omar 2d859dee4e Nav: Added ImGuiItemFlags_NoNav item flag
omar 878fa96896 Nav: Re-arranged ItemAdd() to maximize early out ()
omar dd0855de5c ButtonBehavior: Tidying up.
omar 4b4e455c40 Nav: Internal nenaming
omar e0a2a832cd Nav: Changed internal flag to NoNavDefaultFocus to be false by allow, and more consistent ()
omar af38749ea1 Nav: Fixed ButtonBehavior mistakenly setting active id when the Activate button is held and we have a new NavId, which affected browsing some popups ()
omar ca4db8c905 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar e8f7c83138 Begin: Shallow tweak to minimize diff with nav branch
omar 926c1cf9a4 Merged from Navigation branch: ImGuiItemFlags_SelectableDontClosePopup flag
omar f99348711b Added VerticalSeparator() entry point in imgui_internal. Seperator() in an horizontal layout context still does that.
omar 9142002121 Separator(): Tweak Logging so that the separator text is aligned according to tree padding.
omar d394c7ad0b Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 0106dcbd02 Fixed IsItemHovered() - part of the processing has to be done in ItemAdd() because the widget may alter clipping rectangle temporarily.
omar 2a8eb618dc Nav: Fixed NavDown to open menu from a menu bar ()
omar 35f65e05ed Merge branch 'master' into navigation
omar fafe65a8fc Refactor to move the responsability of SetHovered() to ItemHoverable() - previously IsHovered(). Simpler and the parallel to ItemAdd is clearer with the new name.
omar 2159629e9e Removed another msileading difference between the hovered functions (IsWindowContentHoverable() uses the root window already). Sorry for the commit spam! (making small commit to easily be able to Bisect those in case I make a mistake)
omar eca74d55c7 IsItemHovered(), IsHovered(): Shallow tweaks, eventually removed all the braces.
omar 2b7d4c713e Internals: Moved IsWindowContentHoverable() in the file
omar c5a79deb38 IsItemHovered(), IsHovered(): Shallow tweaks to make them more symetrical. Removed one set of braces.
omar 7bcb1d3816 Internals: ButtonBehavior(), IsHovered() moved the responsability of flatten_child higher level to ButtonBehavior() - not super sure about the elegance of this
omar 79ef64430c Nav: Fixed merge cc26db8ec7
omar cc26db8ec7 Merge branch 'master' into navigation
omar 0adcddac39 IsItemHovered(), ItemAdd(): finishing cleaning up, moved the code to IsItemHovered() so ItemAdd() is more lightweight and the two IsXXXHovered functions are now very similar, making their differences less confusing.
omar 19e22baa06 ItemAdd(): more re-ordering of tests to match IsHovered() + comments
omar 344d48be31 IsItemHovered(), ItemAdd(): Fixed seemingly unnecessary comparaison of root windows, makes IsItemHovered() more consistent with internal IsHovered().
Original test was added in 6e99688fa7 should not have been using RootWindow in the first place.
The difference between public-facing and internal versions would only be noticeable with overlapped child windows, which doesn't really happen anyway
omar c075786d8b ItemAdd(): re-ordering the tests, submission should now be faster.
omar 99c7622a1b ItemAdd(), not performing computation for IsItemRectHovered() which does them itself, allowing us in the next commit to optimize ItemAdd() and make its logic more consistent with IsHovered().
omar e87ad328e4 Moved implementation of Hovered-related functions next to each others + comments, before I attempt to work on them. No functional change here.
omar 869732c456 Nav: Removed unnecessary combo code (that kept the combo arrow highlighted after reverting to mouse controls). ()
omar a2b2e56e8e Merge branch 'master' into navigation
omar e56eba44fe Fixed not being able to move a window by clicking on one of its child window (, ), broken by 313d388bba
omar 8374a454da Removed extraneous ImGui:: prefixes. Declared ColorEditOptionsPopup in imgui_internals.h. Tweaked internal signatures.
omar bbd6d5d5b5 Combo: Cleaned up, removed unnecessary code (looks like this part went untouched for a long time!).
omar 8fd4beddb8 Merge branch 'master' into navigation
omar 9e1ad7295f ImFont: Renamed (supposedly internal) fields (e.g. XAdvance to AdvanceX). Custom text renderers might be affected if they didn't use the GetCharAdvance() helper function.
omar 10bb9524eb ImFont: Renamed ImFont::Glyph to ImFontGlyph (for consistency and so ImFontAtlas types can use it without ordering half of the file). Left a redirection type.
omar f1a20ec66d Merge branch 'master' into navigation
omar be03882a15 Separator(): output vertical separator when used in horizontal layout mode, so it works in menu bars.
omar c7a606ab7e Horizontal layout does the minimum job to be usable internally - not exposed ()
omar 728deff56c Comments, debug code (commented), todo list
omar 82748df71a WantCaptureMouse: Tweaked logic so WantCaptureMouse can stay false when e.g. hovering over void while an InputText() is active. ()
omar 69d0d33451 Exposed PushMultiItemsWidths() to imgui_internal.h
omar 24f21bd4d4 Merge pull request from Urmeli0815/ImGuiSelectableFlags_MenuItem
MenuItem: only activate on Release, not on Click (nb: and not on ClickRelease to allow opening menu and selecting something with a single click. Windows seems to behave the same, allowing to click and hold to e.g. Open then move cursor, release on Save and save gets activated)
omar 7e8069dd23 Merge branch 'master' into navigation
omar c0547d358d Begin: Fixed auto-fit calculation code that predict the presence of ascrollbar so it works in the case size constraints are used. I actually don't need this fix now, but earlier experiment with BeginCombo() required this fix.
omar 4b2781fe87 Begin: Moving some code into a CalcSizeAutoFit() function.
omar 0d56140b4a BeginCombo(): rework internals a little to make it easier to provide custom combo-like elements relying in BeginCombo().
BeginPopupEx() doesn't enforce AlwaysAutoResize flag anymore.
omar 4b82759598 SetNextWindowPos: added a ImVec2 pivot parameter for positioning a given a center, bottom-right position, etc. As a generalization of SetNextWindowPosCenter() which is now obsolete. This will be useful for combo-like popups as well.
Demo: Simple-overlay window uses the SetWindowPos pivot to select a corner to position itself at.
omar 0a55573288 Begin(): Minor tidying up of flow
omar 9f34925b2a Window: Tweaked ApplySizeFullWithConstraint() -> CalcSizeFullWithConstraint() so it can be used without side-effect
omar 0a5fb24f10 Popups: Exposing a little more of popups internals in imgui_internals.h
omar b9c185402e Nav: minor tidying up NavUpdate() to use a local variables, easier to test replacing g.NavWindow with g NavMoveResultWindow for navigation accross flattened child windows.
omar 113b2467cd Minor bits. Reduce usage of GImGui multiple times in same function.
omar 479e532f18 ColorEdit: fixed weird ternary pattern that makes some compiler warning (fair)
omar f24b5f71ca Merge branch 'master' into navigation
omar 79ce9b74d5 BeginTooltipEx() internal tweaks
omar 44e8d94aba Merge branch 'master' into navigation
omar 105f3b14e4 Merge branch 'master' into styles
omar 9693fd5351 PushStyleVar/PopStyleVar: internal tweaks
omar 7c9e38f60a Style: Moving code in a function to make incoming diff easier to parse.
omar 709653c330 Merge branch 'master' into styles
omar 6c91a1ef7f Minor comments
omar 052999a6ab More consistently uses "Dear ImGui"
omar 54d30d758f Implicit "Debug" window uses a "Debug##Default" identifier to allow the user creating such window with custom flags
omar 62d7fa4324 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar f63c03c464 Internals: moved ButtonRepeat and AllowKeyboardFocus bools/stacks to a generic ItemFlags stack. Merged from Navigation branch.
omar 51fcef0c21 BeginCombo() tweaks, merged from Navigation branch.
omar 5c4fda0fbc Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 2169bf6895 Fixed WantTextInput from being true when an activated Drag or Slider was previously turned into an InputText(). ()
omar 790605e359 Minor comments + renaming internal fields
Václav Patejdl e1a7aa41cb Improved ColorPicker hue wheel color interpolation
omar 2600b28f5d Begin(): fixed calling Begin() more than once per frame setting `window_just_activated_by_user` which in turn would set Appearing to true for that frame.
omar 6400f2900a Begin(): renamed locals.
omar a9c6a0f6ec Begin(): Removed unnecessary code (at the time of 1.18 commit e9e0e36f98, CursorPos was used to compute SizeContentsFit and this was necessary)
omar 89cae37b49 Begin(): Tidying up some code, should be a no-op.
omar 8fbe8709f9 TODO, minor tweak
omar e8dbf1c795 Combo: Internally split into BeginCombo(), EndCombo(), toward a more flexible combo api.
omar 5658675e9d Combo: Removed unnecessary ClearActiveId() call (from era where active combo stored an id, now we just use popup functionality)
omar 804ee78731 Added IsWindowAppearing().
Branimir Karadžić 670d40642f Fixed C4267 conversion from size_t to int.
omar 6a1ba317c7 Demo: Minor coding style tweaks so bgfx copy needs less patching.
omar 97a40e74fb Nav: Fixed bad merge of 6def01be5d so the bug fixed in wasn't fully fixed in Nav branch.
omar 96d2942373 InputText: Merged bits from Navigation branch (inc. g.ActiveIdIsJustActivated is only set on the toggle).
omar 9a0171b803 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar 35e4fa7b85 Merged from Navigation branch (DragBehavior)
omar 6cca4025ee Merge from Navigation branch: 6aa8019763
omar ddf41b0398 Merged from Navigation branch. TAB/Alt-TAB processing now deactivate if holding Ctrl.
omar 550dc09998 Merged from Navigation branch (misc)
omar aef041f948 Merged from Navigation branch
omar c9298c2657 Merged from Navigation branch:
f71cdd13b7  Internal tidying up, moved code to CalcNextScrollFromScrollTargetAndClamp() so it can be reused by upcoming nav code.
c816e6c742 Fixed SetScrollX() handling of center ratio (which actually wasn't exposed publicly). (, )
omar 287a4b6b38 Merged from Navigation branch: 5cac4926c8 fix title bar color of window under a modal window.
omar a9e1d9aab9 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
omar 358e7a194e Added GetKeyPressedAmount() (from Nav branch) to be able to measure fast repeat rate accurately. Added internal CalcTypematicPressedRepeatAmount() function.
omar 1f1e63f705 Merge various minor things (supposedly harmless) from Navigation branch into Master to reduce differences. Some code in NewFrame() has been moved around. ()
omar ee42fae468 Merge various minor things (supposedly harmless) from Navigation branch into Master to reduce differences. ()
omar 6752cba4bc Removed duplicate comments
omar 2ee1b70652 Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar f8eef49575 ProgressBar() fixed rendering when straddling rounded area. ()
omar 7a9ea281be ImSwap() helper.
omar 1f51e8f39d Internals: Renamed some ImGuiCorner enums.
omar 7a7327adde ParseFormatPrecision() returns -1 for scientific noation 'e'/'E', RoundScalar() doesn't alter those.
omar 807322c9a5 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar b295e185ff Updated copyright date for 2017, updated Gallery link
omar 419b22a487 Internals: Split some code out of NewFrame() into an Initialize() function.
omar 5938f1ba61 Added IsMousePosValid() helper.
omar a02210a455 Fixed compilation with IMGUI_DISABLE_OBSOLETE_FUNCTIONS defined
omar 92a6faca6f IO: io.MousePos needs to be set to ImVec2(-FLT_MAX,-FLT_MAX) when mouse is unavailable/missing. Previously ImVec2(-1,-1) was enough but we'll now accept negative mouse coordinates.
omar 37f3a718c6 Marked all fmt + va_list functions with format attribute so GCC/Clang can warn about them. Not ignoring -Wsuggest-attribute=format anymore for GCC/Clang.
omar 40f608ce9b Version 1.52 WIP
omar 55a6209931 Version 1.51
omar e6ed2f9939 Nav: Tooltip do not appear in navigation focus list. (, )
omar d213c0eb7e Style: Tweaked default border (undo half-way from original c1e1e015c4) ()
omar b0fc30bd19 Merge branch 'master' into navigation
omar 92efa00bc9 Minor miscellaneous merges from Navigation branch to reduce divergence a little bit
omar 6ed75d3046 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
omar eb2bbf6f29 Renamed IsItemHoveredRect() to IsItemRectHovered(). Renamed IsMouseHoveringWindow() to IsWindowRectHovered() - follow up to previous commit 6be7d4904e merged from Nav.
omar 52b39af0a0 Style: Added obsolete redirects for ImGuiCol_Columns*** fields. (ref 648f75b245)
omar 6be7d4904e Merge part of 88c1966629 from Nav branch. Renamed IsMouseHoveringAnyWindow() -> IsAnyWindowHovered(), IsMouseHoveringWindow() -> IsWindowHoveredRect() for consistency. Kept inline rediection function.
omar 141339e4b7 (internals) Renamed FocusedWindow to NavWindow to match terminology of navigation branch
ocornut 2ad2190d47 Merge 20a0fde012 Tidying up default clipboard handler for non Windows-OS (from Nav branch)
omar f3ab5e6252 Fixed InputText() bug with ImGuiInputTextFlags_EnterReturnsTrue (in nav branch only) (). Thanks @Grouflon
omar bea06117bb Nav: Fix navigation inside child windows. Removed GetChildID() and storin/g the info within the window. ()
ocornut 50b3a14d0a Merge 2545d75c3b from Nav - Tidying up, removed two unnecessary window flags from being exposed in imgui.h
omar d5b0d51274 Minor miscellaneous merges from Navigation branch to reduce divergence a little bit
omar 9670fe9ca7 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_internal.h
omar 6ee317d26d ImRect::Clip() -> ClipWith() to clarify meaning, going to undo the change in Nav branch.
omar 6c82af2b96 Navigation branch fix (we changed Clip)
omar 543dc2817f Fixed an assert when calling CloseCurrentPopup() twice in a row.
omar 53e73182ff Merge branch 'master' into navigation
# Conflicts:
#	imgui_internal.h
omar 530baee1a7 Removed tabs that slipped through the cracks
omar 067127f113 Columns: Caching columns clipping rectangles ()
omar adeaf1cd72 Columns: Moved PushColumnClipRect() to imgui_internal.h
omar 54bdd00df7 Columns: Fix for explicit content width and scrollbar. (, )
omar 83e8d10fab Columns: Columns set resize based on the presence of vertical scrollbar. Not 100% sure about that but it looks like we've fixed enough bugs that this may not cause troubles anymore. (, , , )
omar 1ebd7ec049 Demo: Columns: Added Horizontal Scrolling demo. Tweaked another Columns demo. (, , )
omar 7ff1c149b5 Columns: Fixed another form of shearing made visible by the PreserveWidth option. The code was initially added in c46d5634d4 to fix because we've fixed in e42aaede42eb6d8a47cf104f3afd6057b13a61ee. (, )
omar 1c83b073c6 Columns: A set of column (and most importantly the right-most column) do not register its content to the parent, not affecting the window contents size. (, , )
omar 7f0063f858 Columns: Added ImGuiColumnsFlags_NoResize flag (internal). (, )
omar e70d49ba1f Columns: Fixed one form of shearing during resizing columns with PreserveWidth enabled (there's another issue still). (, )
omar 9307631c90 Columns: Removed unnecessary/misleading dummy ItemSize(). Was fixed already before, and fixed again in this branch by 3bf2af23e6. (, ). End() calls EndColumns() directly.
omar a511b00226 Columns: Fixed offset rounding leading to SetColumnOffset() being destructive when ImGuiColumnsFlags_NoPreserveWidths flag is not set. (, )
omar 3bf2af23e6 Columns: Fixed EndColumns() not repositioning the cursor. ()
omar 19a42cb2fd Columns: Moved BeginColumns/EndColumns/flags from to imgui_internals.h + minor shallow tweaks. Removed demo code temporarily. ()
omar bc78535bbf Merge branch 'master' of https://github.com/ggtucker/imgui into ggtucker-master
# Conflicts:
#	imgui.cpp
#	imgui.h
omar b4eeb4aa8d Renamed GetStyleColName() to GetStyleColorName() for consistency. Extra comments in Api Breaking Changes section.
omar af2db53780 Added GetStyleColorVec4()
omar cf84650ee8 GCC warnings fixes
omar fd394e1e95 Scrollbar: Comments. Fixed potential div-by-zero error which I can repro now, so added an assert to notify us if it's actually ever useful or not.
omar 91d841dd5f Added PushStyleColor(ImGuiCol idx, ImU32 col) overload. (Which _might_ cause an "ambiguous call" compilation error if you are using ImColor() with implicit cast. Cast to ImU32 or ImVec4 explicily to fix.)
omar bf0d9c123e Merge branch 'master' into navigation
omar 24a78767d2 Merge branch 'master' into styles
# Conflicts:
#	TODO.txt
omar 68bf5ecbc1 Marked the weird IMGUI_ONCE_UPON_A_FRAME helper macro as obsolete. prefer using the more explicit ImGuiOnceUponAFrame. Removed the broken __LINE__ from IMGUI_ONCE_UPON_A_FRAME
omar a85a14370b OpenPopupEx() internal tweaks to receive an ImGuiID, BeginPopupContextXXX shortening unnecessarily long identifier.
omar a9915681eb PushID()/PopID() to not need to mark parent window as Accessed (needlessly waking up the root "Debug" window) ()
omar 5ea1865fdb (api breaking) changed parameter order for BeginPopupContextWindow(), note that most uses relied on default parameters completely.
omar d2259f65e5 Undo part of 32dbe836d0 to keep the same name for both overloads (, )
omar f98376d02b Merge branch 'is-popup-open' of https://github.com/mkeeter/imgui into mkeeter-is-popup-open
# Conflicts:
#	imgui.cpp
omar a83f7083ed BeginPopupEx() uses ImGuiID internally
omar 1e162dfc74 PushStyleVar/PopStyleVar: internal tweaks
omar 18f217e631 Style: Moved position of ImGuiCol_TitleBgCollapsed
omar 5429bd892e ColorEdit4: Added "Copy as..." option in context menu ()
omar 0f935248e3 Combo, Inputint, InputFloat, ColorEdit4 all use the small size for little square
omar 032c222d57 Merge branch 'master' into styles
omar 9bf5028fd3 Merge branch 'master' into navigation
omar a6d69f04c0 PlotHistogram: bars are drawn based on the position of zero ()
omar 3d6e037c23 Comments ()
omar bd3dfc0eba Moved TODO list to TODO.txt
omar c26b29b254 Style: Moving code in a function to make incoming diff easier to parse.
omar 2b7fe73a08 Window size can be loaded from .ini data even if ImGuiWindowFlags_NoResize flag is set (, )
omar c1e1e015c4 Style: Tweaked default border (which is off by default) to be less noticeable (, )
omar 648f75b245 Style: renamed ImGuiCol_Columns_*** to ImGuiCol_Separator_*** (BREAKING), Separator() uses this color as well. (, )
omar 6a4064e5f2 PathArcToFast: Minor renaming for clarification. Comments.
omar 8c61a4eb4c Fonts: Adding references to the fact that .OTF fonts are supported (but haven't renamed the entry points)
LuK1337 8352d43a0c Fix broken ImGuiColorEditFlags_NoAlpha flag check
* Fixes warning:
  imgui.cpp:9295:98: warning: enum constant in boolean context [-Wint-in-bool-context]
omar 908b025c3c Fixed (unlikely) Ini saving crash if the ImGuiWindowFlags_NoSavedSettings gets removed from a window after its creation () + minor FAQ tweaks
omar 08265bfbd9 RenderArrow(): fix warning. re-orderer lines to match enum order.
omar e3fae56089 Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
omar d7cad903aa Documentation tweaks
omar 73f9c9d80c Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui_demo.cpp
omar 7e452ec737 Renamed ImGuiSetCond_XXX type and enums to ImGuiCond_XXX, kept old enums under #ifdef IMGUI_DISABLE_OBSOLETE_FUNCTIONS
omar 53d1b1e929 ColorPicker: Fixes for when ImGuiColorEditFlags_NoOptions flag is set: always read a default picker type + forward flag to sub ColorEdit widgets. ()
omar fed18d3203 Removed old ValueColor() helpers. ()
omar fc5ab0cb8d RenderCheckMark() tidying up
omar 4fd148f4f9 Added ImFontAtlas::GlyphRangesBuilder helper + doc
omar 43e2abbee3 Comments, FAQ entry (, )
omar 55b99d753c Minor string typo
omar 30d1e5712a Merge branch 'master' into navigation
# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_internal.h
omar a78ef7a369 Comments
omar 942cb0e1f2 Added SetColorEditOptions(). ColorPicker4: context menu to select picker type and alpha bar. Reorganized flags (again!). ()
omar a4012fd5b2 Merge branch 'master' into 2016-02-colorpicker
omar b5ad88627d Merge various documentation tweaks, comments, todos from the Navigation Branch to reduce drift a little
omar a1bcc8392e Fixed GetScrollMaxX() debug left-over from 7096fd8500 ()
omar 03700ad15e Merge remote-tracking branch 'origin' into 2016-07-navigation
omar 1c991b525a Merge remote-tracking branch 'origin' into 2016-02-colorpicker
omar 0ab722c3c5 Columns: First first column appearing wider than others ()
omar d43c25d8f4 SetScrollHere() tweak to make the code a little less confusing
omar e36b41cbd0 Fixed Y scroll aiming when Horizontal Scrollbar is enabled (). Tweak log demo.
omar 7096fd8500 Fixes for Vertical Scrollbar not automatically getting enabled if enabled Horizontal Scrollbar straddle the vertical limit. (, )