Author Topic: Assert in Setting/Environment  (Read 632 times)

Offline Pecan

  • Plugin developer
  • Lives here!
  • ****
  • Posts: 2924
Assert in Setting/Environment
« on: March 21, 2026, 06:22:20 pm »
Using wx328, I get an assert when clicking Settings/Environment caused by the Dark/Lite setting.

I don't know how to fix this. (commenting out line 768 in trunk\src\src\resources\env_settings.xrc works ).

Windows 11 svn rev 13826


Hmmm... This is happening only in the debuggee. Why would that be?
Maybe the different personality? Nope, that's not it.
« Last Edit: March 21, 2026, 11:09:28 pm by Pecan »

Offline blauzahn

  • Almost regular
  • **
  • Posts: 228
Re: Assert in Setting/Environment
« Reply #1 on: Yesterday at 09:06:08 am »
Looks like issued by wx, not cb. If it is actually an assert, no wonder why it pops up in DEBUG only.

For further readers: It is the horizontal sizer which contains the label "select application appearance" and the combo-box where you select between default, dark and lite mode.

It makes sense to me when reading the corresponding wx doc: https://docs.wxwidgets.org/3.2/overview_sizer.html#overview_sizer_box

Quote
Correspondingly, when using a horizontal sizer, each child can be centered, aligned at the bottom or aligned at the top.

Being no expert on wx whatsoever, I estimate, that just the flag wxALIGN_CENTER_HORIZONTAL should be deleted, not the whole line.
Pulling the window larger the static label remains the same size while the combo box grows. That's fine for me. So, probably no need for a spacer.

The corresponding snippet around trunk/src/src/resources/env_settings.xrc:768 is:

Code
<object class="sizeritem">
<object class="wxBoxSizer">
<object class="sizeritem">
<object class="wxStaticText" name="wxID_ANY">
<label>Select application appearance (if supported by platform):</label>
</object>
<flag>wxLEFT|wxRIGHT|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL</flag>
<border>4</border>
</object>
<object class="sizeritem">
<object class="wxChoice" name="chAppearance">
<content>
<item>System default</item>
<item>Dark</item>
<item>Light</item>
</content>
<selection>0</selection>
<enabled>0</enabled>
</object>
<flag>wxALIGN_CENTER_VERTICAL</flag>
<border>4</border>
<option>1</option>
</object>
</object>
<flag>wxEXPAND</flag>
<border>4</border>
</object>

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 6193
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: Assert in Setting/Environment
« Reply #2 on: Today at 07:44:50 am »
I'm having the same issue here, C::B is link to the wxWidgets 3.3.2 library built with "Debug" option under Windows.

EDIT:

The assert also happens in the release build of C::B link against wx 3.3.2.

The code is related here:
https://github.com/wxWidgets/wxWidgets/blob/d05c5c1d3e55542e63711778193175c099774f60/src/xrc/xh_sizer.cpp#L768
You can see, the line is: xh_sizer.cpp, line 768.
But if you look at the xrc file, the line is also 768.
This is just a coincidence.
« Last Edit: Today at 07:53:58 am by ollydbg »
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.

Offline ollydbg

  • Developer
  • Lives here!
  • *****
  • Posts: 6193
  • OpenCV and Robotics
    • Chinese OpenCV forum moderator
Re: Assert in Setting/Environment
« Reply #3 on: Today at 08:02:16 am »
I just did some test, the result is:

It looks like if you just remove the wxALIGN_CENTER_HORIZONTAL in the xrc file from line 768, you will still see this assert when you try to open the setting dialog.

So, do you think this is the position of the wrong xrc setting? I think it is not.  ;)



EDIT:

remove the option wxALIGN_CENTER_HORIZONTAL in the xrc file's line 768 did fix the assert issue.
« Last Edit: Today at 08:16:29 am by ollydbg »
If some piece of memory should be reused, turn them to variables (or const variables).
If some piece of operations should be reused, turn them to functions.
If they happened together, then turn them to classes.