Released v6.11.0
Released v6.10.0
Hi, During early testing of this patch I've tried to up-cast 'wid' in Window::InvalidateRectangle() to wxScintilla, but that caused random crashes - so I've assumed that there must some other object derived from wxWindow which also uses the generic Window class. Today I've confirmed that this is not the case - and the crashes were most likely a result of broken incremental build. So, here's v4 of the patch, which accordingly to Your requirements does not touch the core Editor class - please check...
Hi, During early testing of this patch I've tried to up-cast 'wid' in Window::InvalidateRectangle() to wxScintilla, but that caused random crashes - so I've assumed that there must some other object derived from wxWindow which also uses the generic Window class. Today I've confirmed that this is not the case - and the crashes were most likely a result of broken incremental build. So, here's v4 of the patch, which accordingly to Your requirements does not touch the core Editor class - pleas check...
released v0.0.33
Hi, The problem is that Window::InvalidateRectangle() operates on wxWindow base class, so it can't access Editor methods/members. -> crash. Meanwhile, I've found and fixed 2 BUGs in DC cache implementation: - Disassembly dialog did not invalidated the cache (no editor events) - so it was not updated. - Incorrect handling of "abandoned" paints -> brace and occurrences highlighting did not always updated the editor. Moreover, I've changed the cache logic by introducing SCI_DC_CACHE_TRIM_ARENA - it's...
Hi, For the patch to work, it really doesn't matter which location is chosen - both options will work if compiler will get correct include paths. Regarding Editor.cxx: there are 10 occurrences of SCI_DC_CACHE_INVALIDATE macro, which expands to void if the DC cache is not enabled. However, while working on this patch I've changed Editor::Redraw(): void Editor::Redraw() { //Platform::DebugPrintf("Redraw all\n"); PRectangle rcClient = GetClientRectangle(); wMain.InvalidateRectangle(rcClient); if (wMargin.GetID())...
Hi, I think the location is correct - it allows to use the cache for other widgets too (in the future). The problem is most likely with what goes to pre-compiled header or with include paths passed to GCC under MSW - I'll try to figure this out. Meanwhile, I've discovered that the cache can't be used when window size is reduced and line wrapping is enabled (I never use this option). So here's a trivial fix: Editor::ChangeSize() must call SCI_DC_CACHE_INVALIDATE if wrapping needs to be updated (otherwise...