Re: MacOS Tahoe painfully slow a wxChoice containing 6k entries.
Tony Kennedy <[email protected]> Wed, 10 Dec 2025 02:41:54 -0800 (PST)
| Newsgroups | gmane.comp.lib.wxwindows.general |
|---|---|
| Message-ID | <[email protected]> |
Sadly it's not going to be as simple as solution 2 above as any "Bind(wxEVT_CHOICE" on the control will need reworking. On Wednesday, 10 December 2025 at 10:12:33 UTC Tony Kennedy wrote: > An update as this potentially impacts all MacOS controls that have a > NSMenu internally. > > I had a feeling it was "Spotlight" that was the problem based on > https://discussions.apple.com/thread/256145409?sortBy=rank. > > Using chatgpt (I'm not familiar with Apple and Spotlight which seems to be > the cause of the problem), it gave me a workaround. > > From chatgpt, > On macOS, wxChoice is implemented using a *native NSPopUpButton*, which > internally creates an *NSMenu* with 6000 NSMenuItems. macOS > Spotlight/Accessibility *automatically scans every NSMenuItem* for > metadata every time the menu changes — especially when > > - > > clearing all items > - > > recreating items > - > > calling Clear() > - > > calling Append() thousands of times > > This is why your app hangs for *60+ seconds*. > > > Two solutions. > > 1. Don't use "Clear", instead create a wxArrayString object, add all the > strings and then call pChoice->Set(items); > > > 2. Replace wxChoice with wxOwnerDrawnComboBox. > #if defined(__WXMAC__) > #define WX_CHOICE wxOwnerDrawnComboBox > #define WX_CHOICE_FLAGS(parent, id, value, pos, size, choices, style) \ > wxOwnerDrawnComboBox(parent, id, value, pos, size, choices, style) > #else > #define WX_CHOICE wxChoice > #define WX_CHOICE_FLAGS(parent, id, value, pos, size, choices, style) \ > wxChoice(parent, id, value, pos, size, choices, style) > #endif > > and then replace > > wxChoice* myChoice = new wxChoice(this, wxID_ANY, wxDefaultPosition, > wxDefaultSize, items); > > with > > WX_CHOICE* myChoice = WX_CHOICE_FLAGS(this, wxID_ANY, wxEmptyString, > wxDefaultPosition, wxDefaultSize, > items, 0); > > > > > > > > > > > > > On Wednesday, 10 December 2025 at 09:31:15 UTC Tony Kennedy wrote: > >> Hi all, >> >> Using MacOS Tahoe and wx 3.3.0.0. >> >> A user has reported that there is a crazy slowdown when using MacOS Tahoe. >> >> The offending line in my code is >> >> m_pChoice->Clear(); >> >> The wxChoice control has 6500 entries and takes approximately a minute to >> clear all entries. >> >> Has anyone else experienced something similar? >> >> All is fine on both Windows and other versions of MacOS. And previous >> versions of my app that used earlier wx (3.2.6) is also fine. >> >> Any advice would be very welcome. >> >> Thanks in advance, >> >> Tony. >> >> -- Please read https://www.wxwidgets.org/support/mlhowto.htm before posting. --- You received this message because you are subscribed to the Google Groups "wx-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/wx-users/394177ed-fa10-4514-bcb2-4dc97ba00fb4n%40googlegroups.com.