Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

build: cmake support, examples included #255

Closed
wants to merge 4 commits into from
Closed

build: cmake support, examples included #255

wants to merge 4 commits into from

Conversation

tamaskenez
Copy link

You can test the build simply by running ./cmake-testbuild.sh. It builds imgui + opengl examples.

I tested it on Windows (msysgit prompt) and Linux. Requires CMake >= 2.8.12.

Rest of the commit msg:

  • cmakelist for imgui, installs config module
  • cmakelist for opengl and opengl3 examples
  • cmake-testbuild.sh to test cmake build
  • tested on windows, linux

- cmakelist for imgui, installs config module
- cmakelist for opengl and opengl3 examples
- cmake-testbuild.sh to test cmake build
- tested on windows, linux
@ocornut
Copy link
Owner

ocornut commented Jul 1, 2015

Thanks. There's two part in that.

  1. imgui
    Unfortunately it's not ok to have a cmakelist for ImGui (library) itself.
  • It's presence detract from the principle than ImGui doesn't need a build system and sends a wrong message. The library is designed to lower the bar to integration and merely "suggesting" that the library needs to be built as a library defeat part of that expectation. As you know building libraries under Windows is often a pain. Being very clear with having no build files send the message that you can just drop the files in your application. So we cannot have a cmake file in the root folder, not there should be an out/ folder.
  • Building ImGui as a lib is really not recommended as it prevents people from using the facilities in imconfig.h in particular IM_VEC2_CLASS_EXTRA which is REALLY useful. If people are used to use a .lib they will tend to bypass all those features which is a really undesirable thing,
  1. examples
    But it's ok and desirable to make better builds for the Examples applications! Those can freely compile imgui.cpp along with them. Could you rework those cmakelist files to be standalone (include imgui as a .cpp and perhaps gl3w as well) ?

Thanks a lot!

@tamaskenez
Copy link
Author

Okay, I see your points. Let's discuss this a bit more. Maybe we can get to a point which would satisfy both you and the cmake-people.

  • it's no problem to move the imgui CMakeLists.txt into a /cmake or /contrib/cmake subdir to hide it
  • I can modify the imgui cmake project to create a library target which contains no .lib, only a set of source files. So it would be the same as adding the imgui files manually to a user project. The imconfig.h features would work as expected.
  • building libraries, or more exactly, using libraries is a pain, unless one uses some tool (e.g. CMake) to make it easy. It's great that imgui can be integrated so easily, but this method, that is, adding a dependency to a project by actually copying the source files is more like a workaround and does not go well with git and CI workflows.
  • I don't understand your comment on the out directory. It's just a temporary build directory, not part of the repository. It could be /tmp/imgui-test or anything but that's not portable.

I think using CMake allows us to include imgui (or any other deps) by simply adding 2 lines to a project file so there's no pain any more. Let me know your thoughts about this. Of course I will understand if you still don't want imgui CMakelist.

@extrawurst
Copy link
Contributor

On Wed, Jul 1, 2015 at 5:27 PM, Tamas Kenez [email protected]
wrote:

Okay, I see your points. Let's discuss this a bit more. Maybe we can get
to a point which would satisfy both you and the cmake-people.

  • it's no problem to move the imgui CMakeLists.txt into a /cmake or
    /contrib/cmake subdir to hide it
  • I can modify the imgui cmake project to create a library target
    which contains no .lib, only a set of source files. So it would be the
    same as adding the imgui files manually to a user project. The
    imconfig.h features would work as expected.
  • building libraries, or more exactly, using libraries is a pain,
    unless one uses some tool (e.g. CMake) to make it easy. It's great that
    imgui can be integrated so easily, but this method, that is, adding a
    dependency to a project by actually copying the source files is more like a
    workaround and does not go well with git and CI workflows.

actually it works totally great with git using submodules. you can pick
what version of imgui you wanna use and update as you whish. simply place
the submodule whereever external libs are and there you go. configure your
projects cmake to use that folder in the build too and there you go.

  • I don't understand your comment on the out directory. It's just a
    temporary build directory, not part of the repository. It could be
    /tmp/imgui-test or anything but that's not portable.

I think using CMake allows us to include imgui (or any other deps) by
simply adding 2 lines to a project file so there's no pain any more. Let me
know your thoughts about this. Of course I will understand if you still
don't want imgui CMakelist.


Reply to this email directly or view it on GitHub
#255 (comment).

tamaskenez and others added 3 commits July 2, 2015 01:08
- works only with CMake 3.3 or later
- older CMake still installs static library
- backward compatible mechanism added for including the user's possibly
  modified imconfig.h without having to install the empty one as
  `imconfig.h`
- move cmake files from root to /cmake
- add documentation to cmake
- enable cmake<3.3 to use imgui from sources
@tamaskenez
Copy link
Author

@extrawurst: thanks for the suggestion, but no. I would skip discussing submodules here, but I'm glad to answer in an issue on my fork.

@tamaskenez
Copy link
Author

I added some new commits. The important changes:

  • cmake-related files moved from root to /cmake/
  • imgui used from sources, not as a compiled library (works with cmake 2.8.12 or later)
  • user imconfig.h supported
  • added a new example: imconfig_example
  • documentation added/updated, emphasing that cmake is optional

@tamaskenez
Copy link
Author

@ocornut: I understand that what you really need is to substitute the examples' Makefiles with cmake projects. Doing exactly what the Makefile does.

While that's possible to do, I'd rather not do it. Reason: I would happily violate any DRY principle if I gain something. In this case I don't see we gain anything by repeating the list of imgui files and compile flags in each consuming project. Copying the files or using a costly workaround (submodule) is also pure minus. So I would stick with the established build-install-link workflow since I see no drawbacks of it here. Using imgui in the user project is super-easy and concise, see the docs in my latest commit.

Anyway, feel free to use the cmake files I wrote for the examples to convert them to no-lib-style, if you like.

And yes, congrats for the great library!

@ocornut
Copy link
Owner

ocornut commented Jul 2, 2015

Thanks for the update!

building libraries, or more exactly, using libraries is a pain, unless one uses some tool (e.g. CMake) to make it easy.

Yes but the problem is that there are many such tools - and every one of those tool is still alien to a majority of the population.

Copying the files or using a costly workaround (submodule) is also pure minus.

I don't understand this sentence. For the files to appear in your folder you'd need to do either a copy either check them out via git.

adding a dependency to a project by actually copying the source files is more like a workaround and does not go well with git and CI workflows.

I don't understand either or have to disagree. Yes it is a workaround around the sad state of building and dependencies in the C++ and Windows world. But it's still the best way and I don't see how copying a few files interfer with git or CI workflow or adding a cmake file makes a difference. Right now for me it is a net strategic mistake to introduce a cmake/ folder and a dozen more files.

In your setup could you host the imgui cmakelist on your side? so e.g. you'd have imgui/cmakefile and actual vanilla code in imgui/imgui/.

I would like to have a better / neater build system for the examples in particular because I want more examples in (for various framework GLUT, SDL, Allegro, etc.) so there's a lot to do here but the reality is that I may not have time to look into those things. They are really long and tedious to test. Examples and building related PR are unfortunately the ones that lives the longest here. Right now I probably wouldn't mind having cmakelist for the examples if they referred to imgui.cpp directly but it'll probably take me a while to sort it out and the PR . Will do eventually!

@adam4813
Copy link

adam4813 commented Jul 2, 2015

In my ci setup I have imgui as a submodule and add the source files to be built inside my game. So there isn't an issue with submodule git and ci by doing it that way.

@hypernewbie
Copy link

Have you considered making this a header-only library? That's what I'm doing; I'm renaming the .cpp file to .inl and including it in my UI source.

@ocornut
Copy link
Owner

ocornut commented Jul 2, 2015

@hypernewbie it's already a little too big really, I am considering splitting the .cpp into two or three files possibly (see #219).. That says it would be trivial to create a wrapper but as you said you can include the .cpp file as well.

@tamaskenez
Copy link
Author

@ocornut:

You (and @adam4813) don't understand what my problem is with your workarounds in git/CI settings. Of course, copying files and submodules do work with git and CI. Just like global variables and backward gotos work fine in a c++ setting. It just gets unmanageable at a scale and most importantly, there's a better way. In my CI setup I have 100 repos building 20 end targets for 4 products for 5 platforms. Things working fine for a single developer with a single project get very inconvenient at this scale.

What you guys suggest and use (copy or submodule) are real, nice workarounds. But I don't understand that why are you keep promoting workarounds when the real solution is available? You keep saying things like "sad state of building and dependencies in the C++ and Windows world" and "in 2015 it is still a massive pain to create and maintain portable build files". Well, it's not. We have the tools. And it's not a novel thing, CMake is 16 years old and there are quite a few alternatives, too.

and every one of those tool is still alien to a majority of the population.

Well, then the best we can do to pick one and start promoting it in our repos to let them known about it, right?

In your setup could you host the imgui cmakelist on your side? so e.g. you'd have imgui/cmakefile and actual vanilla code in imgui/imgui/.

Yes, this can be a good compromise, I think I'll do it. And you know what: for this purpose submodules are perfect.

@tamaskenez
Copy link
Author

@ocornut:

Would you accept just the small change to imgui.h? It's only to conditionally include imconfig.h:

#if !defined IMGUI_CONDITIONAL_IMCONFIG_H || defined IMGUI_INCLUDE_IMCONFIG_H
    #include "imconfig.h"       // User-editable configuration file
#endif

No pressure, if it doesn't fit your way I will patch the file on installation, that's also fine.

@ocornut
Copy link
Owner

ocornut commented Jul 3, 2015

Yes that's certainly possible as a first step. I haven't looked in detail but could it possibly be done with a single define? And your app-side cmakelist would undef the default define?

@tamaskenez
Copy link
Author

Of course, a single define like this was my first thought:

#ifdef IMGUI_INCLUDE_IMCONFIG_H
    #include "imconfig.h"       // User-editable configuration file
#endif

The only reason for the double-define was backward compatibility. Existing projects that use non-empty imconfig.h do not define IMGUI_INCLUDE_IMCONFIG_H.
If that's not an issue then the single-define is better.

@ocornut
Copy link
Owner

ocornut commented Jul 3, 2015

No I meant define that behave like the DISABLE one you added. Your cmake integration would define it and your user code that assume a imconfig.h file would undef it.

(Backward compatibility needs to be preserved here)

@tamaskenez
Copy link
Author

The problem is that not only user code but also imgui.cpp which includes imgui.h assumes imconfig.h. So only imgui.cpp or imgui.h could undef when imgui.cpp is compiled.

(It's also possible that I just don't get what you mean)

@ocornut
Copy link
Owner

ocornut commented Jul 3, 2015

Sorry i meant the user cmakefile code could undef it. (I don't know if you can undef from a cmake filr or not, following another cmake file doing a define)

@ocornut
Copy link
Owner

ocornut commented Jul 3, 2015

Disregard that. Even if it's possible in cmake it may not be possible in other build systems. So better off playing it safe and doing it with two defines.

ocornut added a commit that referenced this pull request Jul 3, 2015
@tamaskenez
Copy link
Author

Thanks! Meanwhile I'm converting the cmake support to separate repo.

@ocornut
Copy link
Owner

ocornut commented Jul 3, 2015

Note I didn't use the exact same name as yours. I thought DISABLE was more in line with existing definitions. It's not really documented but anyone who wonders how to deal with editing imconfig.h will keeping files vanilla should stumble upon it.

@tamaskenez
Copy link
Author

Okay, it seems to be working now: https://github.com/tamaskenez/imgui-cmake, the imgui repo as a submodule.

BTW I hear you're going to split up imgui.cpp. To illustrate the pros of imgui-as-a-library: for all the imgui-cmake users, for all the single one of them (me), this will be a no-op! :)

I'm closing this PR then.

@tamaskenez tamaskenez closed this Jul 4, 2015
@ocornut
Copy link
Owner

ocornut commented Jul 4, 2015

Cool. I'm happy to keep it PR open as reference for others and for myself when I get around to merge cmake stuff for examples at least.

@ocornut
Copy link
Owner

ocornut commented Jan 28, 2018

@tamaskenez Sorry for resurrecting this old topic.

I have added a IMGUI_USER_CONFIG which the user can set to a custom filename to include.

As far I as understand, I think we could retire the old IMGUI_DISABLE_INCLUDE_IMCONFIG_H and IMGUI_INCLUDE_IMCONFIG_H that we added int his topic.

So this block at the top of imgui.h:

// User-editable configuration files (edit stock imconfig.h or define IMGUI_USER_CONFIG to your own filename)
#ifdef IMGUI_USER_CONFIG
#include IMGUI_USER_CONFIG
#endif
#if !defined(IMGUI_DISABLE_INCLUDE_IMCONFIG_H) || defined(IMGUI_INCLUDE_IMCONFIG_H)
#include "imconfig.h"
#endif

Would become:

// User-editable configuration files (edit stock imconfig.h or define IMGUI_USER_CONFIG to your own filename)
#ifdef IMGUI_USER_CONFIG
#include IMGUI_USER_CONFIG
#endif
#include "imconfig.h"

It doesn't really hurt including an unmodified imconfig.h, and removing the extra define would reduce confusion. Where internet grepping I didn't find users of those defines apart from your project, and I can stick in #error directives to catch old code using them. Just wondered if you had an opinion on that.

@tamaskenez
Copy link
Author

tamaskenez commented Jan 28, 2018

@ocornut, thanks for notifying me!
The change is fine with me, I don't use custom imconfig.h now.

(Actually I don't use the imgui-cmake repo any more, I'm building it in a slightly different way from this repo: cmakefied).

@franciscod franciscod mentioned this pull request Apr 2, 2018
@podsvirov podsvirov mentioned this pull request Apr 27, 2018
ocornut added a commit that referenced this pull request Sep 28, 2022
@ocornut
Copy link
Owner

ocornut commented Sep 28, 2022

Amusingly this was still open because of the suggestion to remove IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H, this is now done and closed.

@ocornut ocornut closed this Sep 28, 2022
fangshun2004 added a commit to fangshun2004/imgui that referenced this pull request Sep 29, 2022
commit e74a50f
Author: Andrew D. Zonenberg <[email protected]>
Date:   Wed Sep 28 08:19:34 2022 -0700

    Added GetGlyphRangesGreek() helper for Greek & Coptic glyph range. (ocornut#5676, ocornut#5727)

commit d17627b
Author: ocornut <[email protected]>
Date:   Wed Sep 28 17:38:41 2022 +0200

    InputText: leave state->Flags uncleared for the purpose of backends emitting an on-screen keyboard for passwords. (ocornut#5724)

commit 0a7054c
Author: ocornut <[email protected]>
Date:   Wed Sep 28 17:00:45 2022 +0200

    Backends: Win32: Convert WM_CHAR values with MultiByteToWideChar() when window class was registered as MBCS (not Unicode). (ocornut#5725, ocornut#1807, ocornut#471, ocornut#2815, ocornut#1060)

commit a229a7f
Author: ocornut <[email protected]>
Date:   Wed Sep 28 16:57:09 2022 +0200

    Examples: Win32: Always use RegisterClassW() to ensure windows are Unicode. (ocornut#5725)

commit e0330c1
Author: ocornut <[email protected]>
Date:   Wed Sep 28 14:54:38 2022 +0200

    Fonts, Text: Fixed wrapped-text not doing a fast-forward on lines above the clipping region. (ocornut#5720)

    which would result in an abnormal number of vertices created.

commit 4d4889b
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:42:06 2022 +0200

    Refactor CalcWordWrapPositionA() to take on the responsability of minimum character display. Add CalcWordWrapNextLineStartA(), simplify caller code.

    Should be no-op but incrementing IMGUI_VERSION_NUM just in case.
    Preparing for ocornut#5720

commit 5c4426c
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:22:34 2022 +0200

    Demo: Fixed Log & Console from losing scrolling position with Auto-Scroll when child is clipped. (ocornut#5721)

commit 12c0246
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:07:43 2022 +0200

    Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (ocornut#255)

commit 73efcec
Author: ocornut <[email protected]>
Date:   Tue Sep 27 22:21:47 2022 +0200

    Examples: disable GL related warnings on Mac + amend to ignore list.

commit a725db1
Author: ocornut <[email protected]>
Date:   Tue Sep 27 18:47:20 2022 +0200

    Comments for flags discoverability + add to debug log (ocornut#3795, ocornut#4559)

commit 325299f
Author: ocornut <[email protected]>
Date:   Wed Sep 14 15:46:27 2022 +0200

    Backends: OpenGL: Add ability to #define IMGUI_IMPL_OPENGL_DEBUG. (ocornut#4468, ocornut#4825, ocornut#4832, ocornut#5127, ocornut#5655, ocornut#5709)

commit 56c3eae
Author: ocornut <[email protected]>
Date:   Tue Sep 27 14:24:21 2022 +0200

    ImDrawList: asserting on incorrect value for CurveTessellationTol (ocornut#5713)

commit 04316bd
Author: ocornut <[email protected]>
Date:   Mon Sep 26 16:32:09 2022 +0200

    ColorEdit3: fixed id collision leading to an assertion. (ocornut#5707)

commit c261dac
Author: ocornut <[email protected]>
Date:   Mon Sep 26 14:50:46 2022 +0200

    Demo: moved ShowUserGuide() lower in the file, to make main demo entry point more visible + fix using IMGUI_DEBUG_LOG() macros in if/else.

commit 51bbc70
Author: ocornut <[email protected]>
Date:   Mon Sep 26 14:44:26 2022 +0200

    Backends: SDL: Disable SDL 2.0.22 new "auto capture" which prevents drag and drop across windows, and don't capture mouse when drag and dropping. (ocornut#5710)

commit 7a9045d
Author: ocornut <[email protected]>
Date:   Mon Sep 26 11:55:07 2022 +0200

    Backends: WGPU: removed Emscripten version check (currently failing on CI, ensure why, and tbh its redundant/unnecessary with changes of wgpu api nowadays)

commit 83a0030
Author: ocornut <[email protected]>
Date:   Mon Sep 26 10:33:44 2022 +0200

    Added ImGuiMod_Shortcut which is ImGuiMod_Super on Mac and ImGuiMod_Ctrl otherwise. (ocornut#456)

commit fd408c9
Author: ocornut <[email protected]>
Date:   Thu Sep 22 18:58:33 2022 +0200

    Renamed and merged keyboard modifiers key enums and flags into a same set:. ImGuiKey_ModXXX -> ImGuiMod_XXX and ImGuiModFlags_XXX -> ImGuiMod_XXX. (ocornut#4921, ocornut#456)

    Changed signature of GetKeyChordName() to use ImGuiKeyChord.
    Additionally SetActiveIdUsingAllKeyboardKeys() doesn't set ImGuiKey_ModXXX but we never need/use those and the system will be changed in upcoming commits.

# Conflicts:
#	imgui_demo.cpp
fangshun2004 added a commit to fangshun2004/imgui that referenced this pull request Sep 29, 2022
commit cc5058e
Author: ocornut <[email protected]>
Date:   Thu Sep 29 21:59:32 2022 +0200

    IO: Filter duplicate input events during the AddXXX() calls. (ocornut#5599, ocornut#4921)

commit fac8295
Author: ocornut <[email protected]>
Date:   Thu Sep 29 21:31:36 2022 +0200

    IO: remove ImGuiInputEvent::IgnoredAsSame (revert part of 839c310), will filter earlier in next commit. (ocornut#5599)

    Making it a separate commit as this leads to much indentation change.

commit 9e7f460
Author: ocornut <[email protected]>
Date:   Thu Sep 29 20:42:45 2022 +0200

    Fixed GetKeyName() for ImGuiMod_XXX values, made invalid MousePos display in log nicer.  (ocornut#4921, ocornut#456)

    Amend fd408c9

commit 0749453
Author: ocornut <[email protected]>
Date:   Thu Sep 29 19:51:54 2022 +0200

    Menus, Nav: Fixed not being able to close a menu with Left arrow when parent is not a popup. (ocornut#5730)

commit 9f6aae3
Author: ocornut <[email protected]>
Date:   Thu Sep 29 19:48:27 2022 +0200

    Nav: Fixed race condition pressing Esc during popup opening frame causing crash.

commit bd2355a
Author: ocornut <[email protected]>
Date:   Thu Sep 29 19:25:26 2022 +0200

    Menus, Nav: Fixed using left/right navigation when appending to an existing menu (multiple BeginMenu() call with same names). (ocornut#1207)

commit 3532ed1
Author: ocornut <[email protected]>
Date:   Thu Sep 29 18:07:35 2022 +0200

    Menus, Nav: Fixed keyboard/gamepad navigation occasionally erroneously landing on menu-item in parent when the parent is not a popup. (ocornut#5730)

    Replace BeginMenu/MenuItem swapping g.NavWindow with a more adequate ImGuiItemFlags_NoWindowHoverableCheck.
    Expecting more subtle issues to stem from this.
    Note that NoWindowHoverableCheck is not supported by IsItemHovered() but then IsItemHovered() on BeginMenu() never worked: fix should be easy in BeginMenu() + add test is IsItemHovered(), will do later

commit d5d7050
Author: ocornut <[email protected]>
Date:   Thu Sep 29 17:26:52 2022 +0200

    Various comments

    As it turns out, functions like IsItemHovered() won't work on an open BeginMenu() because LastItemData is overriden by BeginPopup(). Probably an easy fix.

commit e74a50f
Author: Andrew D. Zonenberg <[email protected]>
Date:   Wed Sep 28 08:19:34 2022 -0700

    Added GetGlyphRangesGreek() helper for Greek & Coptic glyph range. (ocornut#5676, ocornut#5727)

commit d17627b
Author: ocornut <[email protected]>
Date:   Wed Sep 28 17:38:41 2022 +0200

    InputText: leave state->Flags uncleared for the purpose of backends emitting an on-screen keyboard for passwords. (ocornut#5724)

commit 0a7054c
Author: ocornut <[email protected]>
Date:   Wed Sep 28 17:00:45 2022 +0200

    Backends: Win32: Convert WM_CHAR values with MultiByteToWideChar() when window class was registered as MBCS (not Unicode). (ocornut#5725, ocornut#1807, ocornut#471, ocornut#2815, ocornut#1060)

commit a229a7f
Author: ocornut <[email protected]>
Date:   Wed Sep 28 16:57:09 2022 +0200

    Examples: Win32: Always use RegisterClassW() to ensure windows are Unicode. (ocornut#5725)

commit e0330c1
Author: ocornut <[email protected]>
Date:   Wed Sep 28 14:54:38 2022 +0200

    Fonts, Text: Fixed wrapped-text not doing a fast-forward on lines above the clipping region. (ocornut#5720)

    which would result in an abnormal number of vertices created.

commit 4d4889b
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:42:06 2022 +0200

    Refactor CalcWordWrapPositionA() to take on the responsability of minimum character display. Add CalcWordWrapNextLineStartA(), simplify caller code.

    Should be no-op but incrementing IMGUI_VERSION_NUM just in case.
    Preparing for ocornut#5720

commit 5c4426c
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:22:34 2022 +0200

    Demo: Fixed Log & Console from losing scrolling position with Auto-Scroll when child is clipped. (ocornut#5721)

commit 12c0246
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:07:43 2022 +0200

    Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (ocornut#255)

commit 73efcec
Author: ocornut <[email protected]>
Date:   Tue Sep 27 22:21:47 2022 +0200

    Examples: disable GL related warnings on Mac + amend to ignore list.

commit a725db1
Author: ocornut <[email protected]>
Date:   Tue Sep 27 18:47:20 2022 +0200

    Comments for flags discoverability + add to debug log (ocornut#3795, ocornut#4559)

commit 325299f
Author: ocornut <[email protected]>
Date:   Wed Sep 14 15:46:27 2022 +0200

    Backends: OpenGL: Add ability to #define IMGUI_IMPL_OPENGL_DEBUG. (ocornut#4468, ocornut#4825, ocornut#4832, ocornut#5127, ocornut#5655, ocornut#5709)

commit 56c3eae
Author: ocornut <[email protected]>
Date:   Tue Sep 27 14:24:21 2022 +0200

    ImDrawList: asserting on incorrect value for CurveTessellationTol (ocornut#5713)

commit 04316bd
Author: ocornut <[email protected]>
Date:   Mon Sep 26 16:32:09 2022 +0200

    ColorEdit3: fixed id collision leading to an assertion. (ocornut#5707)

commit c261dac
Author: ocornut <[email protected]>
Date:   Mon Sep 26 14:50:46 2022 +0200

    Demo: moved ShowUserGuide() lower in the file, to make main demo entry point more visible + fix using IMGUI_DEBUG_LOG() macros in if/else.

commit 51bbc70
Author: ocornut <[email protected]>
Date:   Mon Sep 26 14:44:26 2022 +0200

    Backends: SDL: Disable SDL 2.0.22 new "auto capture" which prevents drag and drop across windows, and don't capture mouse when drag and dropping. (ocornut#5710)

commit 7a9045d
Author: ocornut <[email protected]>
Date:   Mon Sep 26 11:55:07 2022 +0200

    Backends: WGPU: removed Emscripten version check (currently failing on CI, ensure why, and tbh its redundant/unnecessary with changes of wgpu api nowadays)

commit 83a0030
Author: ocornut <[email protected]>
Date:   Mon Sep 26 10:33:44 2022 +0200

    Added ImGuiMod_Shortcut which is ImGuiMod_Super on Mac and ImGuiMod_Ctrl otherwise. (ocornut#456)

commit fd408c9
Author: ocornut <[email protected]>
Date:   Thu Sep 22 18:58:33 2022 +0200

    Renamed and merged keyboard modifiers key enums and flags into a same set:. ImGuiKey_ModXXX -> ImGuiMod_XXX and ImGuiModFlags_XXX -> ImGuiMod_XXX. (ocornut#4921, ocornut#456)

    Changed signature of GetKeyChordName() to use ImGuiKeyChord.
    Additionally SetActiveIdUsingAllKeyboardKeys() doesn't set ImGuiKey_ModXXX but we never need/use those and the system will be changed in upcoming commits.

# Conflicts:
#	imgui.cpp
#	imgui.h
#	imgui_demo.cpp
fangshun2004 added a commit to fangshun2004/imgui that referenced this pull request Sep 30, 2022
commit 5884219
Author: cfillion <[email protected]>
Date:   Wed Sep 28 23:37:39 2022 -0400

    imgui_freetype: Assert if bitmap size exceed chunk size to avoid buffer overflow. (ocornut#5731)

commit f2a522d
Author: ocornut <[email protected]>
Date:   Fri Sep 30 15:43:27 2022 +0200

    ImDrawList: Not using alloca() anymore, lift single polygon size limits. (ocornut#5704, ocornut#1811)

commit cc5058e
Author: ocornut <[email protected]>
Date:   Thu Sep 29 21:59:32 2022 +0200

    IO: Filter duplicate input events during the AddXXX() calls. (ocornut#5599, ocornut#4921)

commit fac8295
Author: ocornut <[email protected]>
Date:   Thu Sep 29 21:31:36 2022 +0200

    IO: remove ImGuiInputEvent::IgnoredAsSame (revert part of 839c310), will filter earlier in next commit. (ocornut#5599)

    Making it a separate commit as this leads to much indentation change.

commit 9e7f460
Author: ocornut <[email protected]>
Date:   Thu Sep 29 20:42:45 2022 +0200

    Fixed GetKeyName() for ImGuiMod_XXX values, made invalid MousePos display in log nicer.  (ocornut#4921, ocornut#456)

    Amend fd408c9

commit 0749453
Author: ocornut <[email protected]>
Date:   Thu Sep 29 19:51:54 2022 +0200

    Menus, Nav: Fixed not being able to close a menu with Left arrow when parent is not a popup. (ocornut#5730)

commit 9f6aae3
Author: ocornut <[email protected]>
Date:   Thu Sep 29 19:48:27 2022 +0200

    Nav: Fixed race condition pressing Esc during popup opening frame causing crash.

commit bd2355a
Author: ocornut <[email protected]>
Date:   Thu Sep 29 19:25:26 2022 +0200

    Menus, Nav: Fixed using left/right navigation when appending to an existing menu (multiple BeginMenu() call with same names). (ocornut#1207)

commit 3532ed1
Author: ocornut <[email protected]>
Date:   Thu Sep 29 18:07:35 2022 +0200

    Menus, Nav: Fixed keyboard/gamepad navigation occasionally erroneously landing on menu-item in parent when the parent is not a popup. (ocornut#5730)

    Replace BeginMenu/MenuItem swapping g.NavWindow with a more adequate ImGuiItemFlags_NoWindowHoverableCheck.
    Expecting more subtle issues to stem from this.
    Note that NoWindowHoverableCheck is not supported by IsItemHovered() but then IsItemHovered() on BeginMenu() never worked: fix should be easy in BeginMenu() + add test is IsItemHovered(), will do later

commit d5d7050
Author: ocornut <[email protected]>
Date:   Thu Sep 29 17:26:52 2022 +0200

    Various comments

    As it turns out, functions like IsItemHovered() won't work on an open BeginMenu() because LastItemData is overriden by BeginPopup(). Probably an easy fix.

commit e74a50f
Author: Andrew D. Zonenberg <[email protected]>
Date:   Wed Sep 28 08:19:34 2022 -0700

    Added GetGlyphRangesGreek() helper for Greek & Coptic glyph range. (ocornut#5676, ocornut#5727)

commit d17627b
Author: ocornut <[email protected]>
Date:   Wed Sep 28 17:38:41 2022 +0200

    InputText: leave state->Flags uncleared for the purpose of backends emitting an on-screen keyboard for passwords. (ocornut#5724)

commit 0a7054c
Author: ocornut <[email protected]>
Date:   Wed Sep 28 17:00:45 2022 +0200

    Backends: Win32: Convert WM_CHAR values with MultiByteToWideChar() when window class was registered as MBCS (not Unicode). (ocornut#5725, ocornut#1807, ocornut#471, ocornut#2815, ocornut#1060)

commit a229a7f
Author: ocornut <[email protected]>
Date:   Wed Sep 28 16:57:09 2022 +0200

    Examples: Win32: Always use RegisterClassW() to ensure windows are Unicode. (ocornut#5725)

commit e0330c1
Author: ocornut <[email protected]>
Date:   Wed Sep 28 14:54:38 2022 +0200

    Fonts, Text: Fixed wrapped-text not doing a fast-forward on lines above the clipping region. (ocornut#5720)

    which would result in an abnormal number of vertices created.

commit 4d4889b
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:42:06 2022 +0200

    Refactor CalcWordWrapPositionA() to take on the responsability of minimum character display. Add CalcWordWrapNextLineStartA(), simplify caller code.

    Should be no-op but incrementing IMGUI_VERSION_NUM just in case.
    Preparing for ocornut#5720

commit 5c4426c
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:22:34 2022 +0200

    Demo: Fixed Log & Console from losing scrolling position with Auto-Scroll when child is clipped. (ocornut#5721)

commit 12c0246
Author: ocornut <[email protected]>
Date:   Wed Sep 28 12:07:43 2022 +0200

    Removed support for 1.42-era IMGUI_DISABLE_INCLUDE_IMCONFIG_H / IMGUI_INCLUDE_IMCONFIG_H. (ocornut#255)

commit 73efcec
Author: ocornut <[email protected]>
Date:   Tue Sep 27 22:21:47 2022 +0200

    Examples: disable GL related warnings on Mac + amend to ignore list.

commit a725db1
Author: ocornut <[email protected]>
Date:   Tue Sep 27 18:47:20 2022 +0200

    Comments for flags discoverability + add to debug log (ocornut#3795, ocornut#4559)

commit 325299f
Author: ocornut <[email protected]>
Date:   Wed Sep 14 15:46:27 2022 +0200

    Backends: OpenGL: Add ability to #define IMGUI_IMPL_OPENGL_DEBUG. (ocornut#4468, ocornut#4825, ocornut#4832, ocornut#5127, ocornut#5655, ocornut#5709)

commit 56c3eae
Author: ocornut <[email protected]>
Date:   Tue Sep 27 14:24:21 2022 +0200

    ImDrawList: asserting on incorrect value for CurveTessellationTol (ocornut#5713)

commit 04316bd
Author: ocornut <[email protected]>
Date:   Mon Sep 26 16:32:09 2022 +0200

    ColorEdit3: fixed id collision leading to an assertion. (ocornut#5707)

commit c261dac
Author: ocornut <[email protected]>
Date:   Mon Sep 26 14:50:46 2022 +0200

    Demo: moved ShowUserGuide() lower in the file, to make main demo entry point more visible + fix using IMGUI_DEBUG_LOG() macros in if/else.

commit 51bbc70
Author: ocornut <[email protected]>
Date:   Mon Sep 26 14:44:26 2022 +0200

    Backends: SDL: Disable SDL 2.0.22 new "auto capture" which prevents drag and drop across windows, and don't capture mouse when drag and dropping. (ocornut#5710)

commit 7a9045d
Author: ocornut <[email protected]>
Date:   Mon Sep 26 11:55:07 2022 +0200

    Backends: WGPU: removed Emscripten version check (currently failing on CI, ensure why, and tbh its redundant/unnecessary with changes of wgpu api nowadays)

commit 83a0030
Author: ocornut <[email protected]>
Date:   Mon Sep 26 10:33:44 2022 +0200

    Added ImGuiMod_Shortcut which is ImGuiMod_Super on Mac and ImGuiMod_Ctrl otherwise. (ocornut#456)

commit fd408c9
Author: ocornut <[email protected]>
Date:   Thu Sep 22 18:58:33 2022 +0200

    Renamed and merged keyboard modifiers key enums and flags into a same set:. ImGuiKey_ModXXX -> ImGuiMod_XXX and ImGuiModFlags_XXX -> ImGuiMod_XXX. (ocornut#4921, ocornut#456)

    Changed signature of GetKeyChordName() to use ImGuiKeyChord.
    Additionally SetActiveIdUsingAllKeyboardKeys() doesn't set ImGuiKey_ModXXX but we never need/use those and the system will be changed in upcoming commits.

# Conflicts:
#	docs/CHANGELOG.txt
#	imgui.h
#	imgui_demo.cpp
BramblePie pushed a commit to BramblePie/imgui that referenced this pull request Oct 26, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants