Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package scintilla for openSUSE:Factory checked in at 2026-01-26 11:04:55 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/scintilla (Old) and /work/SRC/openSUSE:Factory/.scintilla.new.1928 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "scintilla" Mon Jan 26 11:04:55 2026 rev:51 rq:1329030 version:5.5.8 Changes: -------- --- /work/SRC/openSUSE:Factory/scintilla/scintilla.changes 2025-06-24 20:51:50.902940452 +0200 +++ /work/SRC/openSUSE:Factory/.scintilla.new.1928/scintilla.changes 2026-01-26 11:04:56.452568067 +0100 @@ -1,0 +2,11 @@ +Fri Jan 23 18:11:07 UTC 2026 - Atri Bhattacharya <[email protected]> + +- Update to version 5.5.8: + * Change format for SCI_GETSELECTIONSERIALIZED. Feature #1563. + * Ensure selection drawn correctly when selection restored by + undo. Bug #2487. + * Update to Unicode 16. Feature #1569. + * Fix bug when indenting rectangular selection. Feature #1567. + * Add PTRDIFF_DOESNT_ALIAS_INT preprocessor choice. + +------------------------------------------------------------------- Old: ---- scintilla557.tgz New: ---- scintilla558.tgz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ scintilla.spec ++++++ --- /var/tmp/diff_new_pack.tqxseS/_old 2026-01-26 11:04:57.388607230 +0100 +++ /var/tmp/diff_new_pack.tqxseS/_new 2026-01-26 11:04:57.388607230 +0100 @@ -17,8 +17,8 @@ %define so_ver 5.5 -%define _ver %{so_ver}.7 -%define tar_ver 557 +%define _ver %{so_ver}.8 +%define tar_ver 558 %define libname libscintilla5 Name: scintilla Version: %{_ver} ++++++ scintilla557.tgz -> scintilla558.tgz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/cocoa/Scintilla/Info.plist new/scintilla/cocoa/Scintilla/Info.plist --- old/scintilla/cocoa/Scintilla/Info.plist 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/cocoa/Scintilla/Info.plist 2025-11-10 05:34:28.000000000 +0100 @@ -15,7 +15,7 @@ <key>CFBundlePackageType</key> <string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string> <key>CFBundleShortVersionString</key> - <string>5.5.7</string> + <string>5.5.8</string> <key>CFBundleVersion</key> <string>$(CURRENT_PROJECT_VERSION)</string> <key>NSHumanReadableCopyright</key> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/cocoa/Scintilla/Scintilla.xcodeproj/project.pbxproj new/scintilla/cocoa/Scintilla/Scintilla.xcodeproj/project.pbxproj --- old/scintilla/cocoa/Scintilla/Scintilla.xcodeproj/project.pbxproj 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/cocoa/Scintilla/Scintilla.xcodeproj/project.pbxproj 2025-11-10 05:34:28.000000000 +0100 @@ -586,7 +586,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 5.5.7; + CURRENT_PROJECT_VERSION = 5.5.8; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = dwarf; ENABLE_STRICT_OBJC_MSGSEND = YES; @@ -650,7 +650,7 @@ CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; COPY_PHASE_STRIP = NO; - CURRENT_PROJECT_VERSION = 5.5.7; + CURRENT_PROJECT_VERSION = 5.5.8; DEAD_CODE_STRIPPING = YES; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; ENABLE_NS_ASSERTIONS = NO; @@ -682,7 +682,7 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 5.5.7; + CURRENT_PROJECT_VERSION = 5.5.8; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; @@ -717,7 +717,7 @@ CODE_SIGN_IDENTITY = "-"; CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; - CURRENT_PROJECT_VERSION = 5.5.7; + CURRENT_PROJECT_VERSION = 5.5.8; DEAD_CODE_STRIPPING = YES; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = ""; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/cppcheck.suppress new/scintilla/cppcheck.suppress --- old/scintilla/cppcheck.suppress 2024-10-19 13:21:25.000000000 +0200 +++ new/scintilla/cppcheck.suppress 2025-11-10 05:34:28.000000000 +0100 @@ -23,16 +23,10 @@ // cppcheck 2.11 can't find system headers on Win32. missingIncludeSystem -// cppcheck 2.11 limits checking of complex functions unless --check-level=exhaustive -checkLevelNormal:scintilla/src/Editor.cxx - // The cast converts from 'unsigned char ' to 'char' so isn't unused. // Redundant code: Found unused cast of expression 'leadByte' constStatement:scintilla/src/Document.cxx -// ILexer5* is not pointing at logically const -constParameterPointer:scintilla/src/Document.cxx - // Some non-explicit constructors are used for conversions or are private to lexers noExplicitConstructor @@ -64,7 +58,7 @@ constVariablePointer:scintilla/gtk/ScintillaGTKAccessible.cxx // moc_ files show #error as they are not built with standard context -preprocessorErrorDirective:scintilla/qt/*.cpp +preprocessorErrorDirective:scintilla/qt/**.cpp // Doesn't understand Qt slots macro unknownMacro:scintilla/qt/ScintillaEditBase/*.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/doc/Lexer.txt new/scintilla/doc/Lexer.txt --- old/scintilla/doc/Lexer.txt 2022-04-25 07:03:25.000000000 +0200 +++ new/scintilla/doc/Lexer.txt 2025-11-10 05:34:28.000000000 +0100 @@ -89,7 +89,7 @@ An alternative would be to use a "state-based" approach. The outer loop would iterate over states, like this: - lengthDoc = startPos+lenth ; + lengthDoc = startPos+length ; for ( unsigned int i = startPos ;; ) { char ch = styler.SafeGetCharAt(i); int new_state = 0 ; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/doc/ScintillaDoc.html new/scintilla/doc/ScintillaDoc.html --- old/scintilla/doc/ScintillaDoc.html 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/doc/ScintillaDoc.html 2025-11-10 05:34:29.000000000 +0100 @@ -1444,6 +1444,9 @@ <b id="SCI_GETSELECTIONSERIALIZED">SCI_GETSELECTIONSERIALIZED(<unused>, char *selectionString) → position</b><br /> Set or query the selection type and positions as a serialized string. The format of this string may change in future versions so should not be persisted beyond the current session.</p> + <p>The format is currently<br/><code>[selType:R|L|T] [# mainRange ,] [anchor [v virtualSpace] [- caret [v virtualSpace]]] [, ...]</code> + <br/>Example of a multiple selection with virtual space: <code>#1,5v3-2,1</code> + </p> <p> <b id="SC_ELEMENT_SELECTION_ADDITIONAL_TEXT">SC_ELEMENT_SELECTION_ADDITIONAL_TEXT : colouralpha</b><br /> @@ -2031,7 +2034,7 @@ <p><b id="SCI_GETUNDOSEQUENCE">SCI_GETUNDOSEQUENCE → int</b><br /> Determine if an undo sequence is active with a positive value indicating that a sequence is active and 0 that there is no current sequence. The value returned is the nesting depth of the sequence, that is, the number of times <code>SCI_BEGINUNDOACTION</code> - was called without a correspnding <code>SCI_ENDUNDOACTION</code>. + was called without a corresponding <code>SCI_ENDUNDOACTION</code>. A negative value indicates an error.</p> <p><b id="SCI_ADDUNDOACTION">SCI_ADDUNDOACTION(int token, int flags)</b><br /> @@ -3840,8 +3843,8 @@ <p><b id="SCI_STYLESETINVISIBLEREPRESENTATION">SCI_STYLESETINVISIBLEREPRESENTATION(int style, const char *representation)</b><br /> <b id="SCI_STYLEGETINVISIBLEREPRESENTATION">SCI_STYLEGETINVISIBLEREPRESENTATION(int style, char *representation NUL-terminated) → int</b><br /> When a style is made invisible with <a class="seealso" href="#SCI_STYLESETVISIBLE">SCI_STYLESETVISIBLE</a>, text is difficult to edit as - the cursor can be at both sides of the invisible text segment. With these messages invisible text segements can be made visible with a single - UTF8 characater giving the user an indication if the cursor is left or right of the invisible text. The character is displayed using the current style.</p> + the cursor can be at both sides of the invisible text segment. With these messages invisible text segments can be made visible with a single + UTF8 character giving the user an indication if the cursor is left or right of the invisible text. The character is displayed using the current style.</p> <p>The <code>representation</code> parameter is a zero terminated string holding the one character used to represent the invisible text segment. Only the first character is used, the character is decoded as UTF-8.</p> @@ -6535,7 +6538,7 @@ <a class="message" href="#SCI_AUTOCGETMAXWIDTH">SCI_AUTOCGETMAXWIDTH → int</a><br /> <a class="message" href="#SCI_AUTOCSETSTYLE">SCI_AUTOCSETSTYLE(int style)</a><br /> <a class="message" href="#SCI_AUTOCGETSTYLE">SCI_AUTOCGETSTYLE → int</a><br /> - <a class="message" href="#SCI_AUTOCSETIMAGESCALE">SCI_AUTOCSETIMAGESCALE(int scale)</a><br /> + <a class="message" href="#SCI_AUTOCSETIMAGESCALE">SCI_AUTOCSETIMAGESCALE(int scalePercent)</a><br /> <a class="message" href="#SCI_AUTOCGETIMAGESCALE">SCI_AUTOCGETIMAGESCALE → int</a><br /> <a class="element" href="#SC_ELEMENT_LIST">SC_ELEMENT_LIST : colouralpha</a><br /> <a class="element" href="#SC_ELEMENT_LIST_BACK">SC_ELEMENT_LIST_BACK : colouralpha</a><br /> @@ -8274,10 +8277,10 @@ style is wider than the window then the break occurs after the last character that completely fits on the line. The horizontal scroll bar does not appear when wrap mode is on.</p> - <p>For wrapped lines Scintilla can draw visual flags (little arrows) at end of a a subline of a - wrapped line and at begin of the next subline. These can be enabled individually, but if Scintilla - draws the visual flag at the beginning of the next subline this subline will be indented by one char. - Independent from drawing a visual flag at the begin the subline can have an indention.</p> + <p>For wrapped lines Scintilla can draw visual flags (little arrows) at end of a a subline of a + wrapped line and at begin of the next subline. These can be enabled individually, but if Scintilla + draws the visual flag at the beginning of the next subline this subline will be indented by one char. + Independent from drawing a visual flag at the begin the subline can have an indentation.</p> <p>Much of the time used by Scintilla is spent on laying out and drawing text. The same text layout calculations may be performed many times even when the data used in these calculations @@ -8441,7 +8444,7 @@ <a class="message" href="#StyleDefinition"><code>STYLE_DEFAULT</code></a>. There are no limits on indent sizes, but values less than 0 or large values may have undesirable effects.<br /> - The indention of sublines is independent of visual flags, but if + The indentation of sublines is independent of visual flags, but if <code>SC_WRAPVISUALFLAG_START</code> is set an indent of at least 1 is used. </p> @@ -10526,6 +10529,13 @@ <td align="left"><code>DISABLE_D2D</code></td> <td>(Win32) Build Scintilla without Direct2D/DirectWrite.</td> </tr> + + <tr> + <td align="left"><code>PTRDIFF_DOESNT_ALIAS_INT</code></td> + <td>Define if <code>ptrdiff_t*</code> does not alias <code>int*</code>. + This is detected automatically, but the check may be unreliable. + Try to define this symbol in case of errors about undefined symbols.</td> + </tr> </tbody> </table> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/doc/ScintillaDownload.html new/scintilla/doc/ScintillaDownload.html --- old/scintilla/doc/ScintillaDownload.html 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/doc/ScintillaDownload.html 2025-11-10 05:34:29.000000000 +0100 @@ -26,9 +26,9 @@ <table bgcolor="#CCCCCC" width="100%" cellspacing="0" cellpadding="8" border="0"> <tr> <td> - <font size="4"> <a href="https://www.scintilla.org/scintilla557.zip"> + <font size="4"> <a href="https://www.scintilla.org/scintilla558.zip"> Windows</a> - <a href="https://www.scintilla.org/scintilla557.tgz"> + <a href="https://www.scintilla.org/scintilla558.tgz"> GTK/Linux</a> </font> </td> @@ -42,7 +42,7 @@ containing very few restrictions. </p> <h3> - Release 5.5.7 + Release 5.5.8 </h3> <h4> Source Code @@ -50,8 +50,8 @@ The source code package contains all of the source code for Scintilla but no binary executable code and is available in <ul> - <li><a href="https://www.scintilla.org/scintilla557.zip">zip format</a> (1.8M) commonly used on Windows</li> - <li><a href="https://www.scintilla.org/scintilla557.tgz">tgz format</a> (1.7M) commonly used on Linux and compatible operating systems</li> + <li><a href="https://www.scintilla.org/scintilla558.zip">zip format</a> (1.8M) commonly used on Windows</li> + <li><a href="https://www.scintilla.org/scintilla558.tgz">tgz format</a> (1.7M) commonly used on Linux and compatible operating systems</li> </ul> Instructions for building on both Windows and Linux are included in the readme file. <h4> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/doc/ScintillaHistory.html new/scintilla/doc/ScintillaHistory.html --- old/scintilla/doc/ScintillaHistory.html 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/doc/ScintillaHistory.html 2025-11-10 05:34:29.000000000 +0100 @@ -590,10 +590,50 @@ <td>8day</td> </tr><tr> <td>Ahmet Sait</td> + <td>Sven Ritter</td> </tr> </table> <h2 id="Releases">Releases</h2> <h3> + <a href="https://www.scintilla.org/scintilla558.zip">Release 5.5.8</a> + </h3> + <ul> + <li> + Released 10 November 2025. + </li> + <li> + Change format for SCI_GETSELECTIONSERIALIZED. + <a href="https://sourceforge.net/p/scintilla/feature-requests/1563/">Feature #1563</a>. + </li> + <li> + Ensure selection drawn correctly when selection restored by undo. + <a href="https://sourceforge.net/p/scintilla/bugs/2487/">Bug #2487</a>. + </li> + <li> + Update to Unicode 16. + <a href="https://sourceforge.net/p/scintilla/feature-requests/1569/">Feature #1569</a>. + </li> + <li> + Fix bug when indenting rectangular selection. + <a href="https://sourceforge.net/p/scintilla/feature-requests/1567/">Feature #1567</a>. + </li> + <li> + Add PTRDIFF_DOESNT_ALIAS_INT preprocessor choice. + </li> + <li> + On Win32, force autocompletion list colours to be opaque. + Enlarge bitmap to avoid visible blank background between items. + <a href="https://sourceforge.net/p/scintilla/bugs/2482/">Bug #2482</a>. + </li> + <li> + On Cocoa, fix crash with bidirectional mode when scrolled before start of document. + </li> + <li> + On Cocoa, use same default calltip colours as other platforms for consistency. + <a href="https://sourceforge.net/p/scintilla/bugs/2486/">Bug #2486</a>. + </li> + </ul> + <h3> <a href="https://www.scintilla.org/scintilla557.zip">Release 5.5.7</a> </h3> <ul> @@ -1779,7 +1819,7 @@ </li> <li> Remove SetLexer, SetLexerLanguage, and LoadLexerLibrary methods. - These have been superceded by Lexilla and the SetILexer API. + These have been superseded by Lexilla and the SetILexer API. </li> <li> Improve the platform layer interface. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/doc/index.html new/scintilla/doc/index.html --- old/scintilla/doc/index.html 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/doc/index.html 2025-11-10 05:34:29.000000000 +0100 @@ -9,7 +9,7 @@ <meta name="keywords" content="Scintilla, SciTE, Editing Component, Text Editor" /> <meta name="Description" content="www.scintilla.org is the home of the Scintilla editing component and SciTE text editor application." /> - <meta name="Date.Modified" content="20250608" /> + <meta name="Date.Modified" content="20251110" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <style type="text/css"> .logo { @@ -61,8 +61,8 @@ GTK, and macOS</font> </td> <td width="40%" align="right"> - <font color="#FFCC99" size="3"> Release version 5.5.7<br /> - Site last modified June 8 2025</font> + <font color="#FFCC99" size="3"> Release version 5.5.8<br /> + Site last modified November 10 2025</font> </td> <td width="20%"> @@ -77,11 +77,11 @@ </tr> </table> <ul id="versionlist"> + <li>Version 5.5.8 changes format of SCI_GETSELECTIONSERIALIZED and fixes redraw after undo.</li> <li>Version 5.5.7 can prevent storing scroll position in undo selection history and adds a wrap-aware SCI_SCROLLVERTICAL API.</li> <li>Version 5.5.6 improves DBCS and autocompletion drawing on Win32 and improves dwell, encoding and text clipping on Qt.</li> <li>Version 5.5.5 can remember selection with undo and redo. Update to use DirectWrite 1.1.</li> <li>Version 5.5.4 fixes wrapping of removed lines and edge cases for moving lines. On GTK, middle click can be repeated with one value.</li> - <li>Version 5.5.3 fixes horizontal scrolling with a touchpad on Win32.</li> </ul> <ul id="menu"> <li id="remote1"><a href="https://www.scintilla.org/SciTEImage.html">Screenshot</a></li> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/qt/ScintillaEdit/ScintillaEdit.pro new/scintilla/qt/ScintillaEdit/ScintillaEdit.pro --- old/scintilla/qt/ScintillaEdit/ScintillaEdit.pro 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/qt/ScintillaEdit/ScintillaEdit.pro 2025-11-10 05:34:29.000000000 +0100 @@ -13,7 +13,7 @@ CONFIG += lib_bundle CONFIG += c++1z -VERSION = 5.5.7 +VERSION = 5.5.8 SOURCES += \ ScintillaEdit.cpp \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/qt/ScintillaEditBase/ScintillaEditBase.pro new/scintilla/qt/ScintillaEditBase/ScintillaEditBase.pro --- old/scintilla/qt/ScintillaEditBase/ScintillaEditBase.pro 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/qt/ScintillaEditBase/ScintillaEditBase.pro 2025-11-10 05:34:29.000000000 +0100 @@ -13,7 +13,7 @@ CONFIG += lib_bundle CONFIG += c++1z -VERSION = 5.5.7 +VERSION = 5.5.8 SOURCES += \ PlatQt.cpp \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/scripts/HeaderOrder.txt new/scintilla/scripts/HeaderOrder.txt --- old/scintilla/scripts/HeaderOrder.txt 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/scripts/HeaderOrder.txt 2025-11-10 05:34:29.000000000 +0100 @@ -62,6 +62,7 @@ #include <mutex> #include <thread> #include <future> +#include <type_traits> // GTK headers #include <glib.h> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/CallTip.cxx new/scintilla/src/CallTip.cxx --- old/scintilla/src/CallTip.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/CallTip.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -40,15 +40,9 @@ namespace { -#ifdef __APPLE__ -// Archaic macOS colours for the default: black on light yellow -constexpr ColourRGBA colourTextAndArrow(black); -constexpr ColourRGBA colourBackground(0xff, 0xff, 0xc6); -#else // Grey on white constexpr ColourRGBA colourTextAndArrow(0x80, 0x80, 0x80); constexpr ColourRGBA colourBackground(white); -#endif constexpr ColourRGBA silver(0xc0, 0xc0, 0xc0); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/CaseConvert.cxx new/scintilla/src/CaseConvert.cxx --- old/scintilla/src/CaseConvert.cxx 2025-04-01 23:08:29.000000000 +0200 +++ new/scintilla/src/CaseConvert.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -84,6 +84,7 @@ 66979,66940,15,1, 66995,66956,7,1, 68800,68736,51,1, +68976,68944,22,1, 71872,71840,32,1, 93792,93760,32,1, 125218,125184,34,1, @@ -114,6 +115,7 @@ 405,502, 409,408, 410,573, +411,42972, 414,544, 417,416, 419,418, @@ -149,6 +151,7 @@ 608,403, 609,42924, 611,404, +612,42955, 613,42893, 614,42922, 616,407, @@ -195,6 +198,7 @@ 4349,7357, 4350,7358, 4351,7359, +7306,7305, 7545,42877, 7549,11363, 7566,42950, @@ -246,9 +250,11 @@ 42900,42948, 42952,42951, 42954,42953, +42957,42956, 42961,42960, 42967,42966, 42969,42968, +42971,42970, 42998,42997, 43859,42931, 67003,66964, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/CellBuffer.cxx new/scintilla/src/CellBuffer.cxx --- old/scintilla/src/CellBuffer.cxx 2025-02-24 22:46:04.000000000 +0100 +++ new/scintilla/src/CellBuffer.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -21,6 +21,7 @@ #include <optional> #include <algorithm> #include <memory> +#include <type_traits> #include "ScintillaTypes.h" @@ -215,7 +216,7 @@ } void InsertLines(Sci::Line line, const Sci::Position *positions, size_t lines, bool lineStart) override { const POS lineAsPos = pos_cast(line); - if constexpr (sizeof(Sci::Position) == sizeof(POS)) { + if constexpr (std::is_convertible_v<Sci::Position *, POS *>) { starts.InsertPartitions(lineAsPos, positions, lines); } else { starts.InsertPartitionsWithCast(lineAsPos, positions, lines); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/CharacterCategoryMap.cxx new/scintilla/src/CharacterCategoryMap.cxx --- old/scintilla/src/CharacterCategoryMap.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/CharacterCategoryMap.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -22,7 +22,7 @@ const int catRanges[] = { //++Autogenerated -- start of section automatically generated -// Created with Python 3.13.0, Unicode 15.1.0 +// Created with Python 3.14.0, Unicode 16.0.0 25, 1046, 1073, @@ -756,7 +756,7 @@ 70141, 70170, 70237, -70405, +70373, 70660, 71971, 72005, @@ -1427,13 +1427,13 @@ 223334, 223396, 223677, +223697, 223752, 224081, 224309, 224613, 224917, 225201, -225277, 225285, 225350, 225380, @@ -1471,7 +1471,9 @@ 233219, 233425, 233473, -233789, +233760, +233793, +233853, 233984, 235389, 235424, @@ -1950,7 +1952,7 @@ 292501, 293778, 293973, -296189, +296285, 296981, 297341, 297994, @@ -2319,7 +2321,7 @@ 406229, 406532, 407573, -408733, +408797, 409077, 409092, 409621, @@ -2588,7 +2590,9 @@ 1374465, 1374496, 1374529, -1374589, +1374560, +1374625, +1374685, 1374720, 1374753, 1374813, @@ -2599,7 +2603,10 @@ 1374945, 1374976, 1375009, -1375069, +1375040, +1375073, +1375104, +1375165, 1375811, 1375904, 1375937, @@ -3005,6 +3012,8 @@ 2144093, 2144097, 2144189, +2144260, +2145949, 2146308, 2156285, 2156548, @@ -3118,6 +3127,19 @@ 2204957, 2205192, 2205533, +2205704, +2206020, +2206147, +2206180, +2206208, +2206941, +2207013, +2207180, +2207203, +2207233, +2207965, +2208210, +2208285, 2214922, 2215933, 2215940, @@ -3127,7 +3149,9 @@ 2217437, 2217476, 2217565, -2219941, +2218052, +2218173, +2219909, 2220036, 2220970, 2221284, @@ -3283,6 +3307,37 @@ 2256317, 2256389, 2256573, +2256900, +2257245, +2257252, +2257309, +2257348, +2257405, +2257412, +2258653, +2258660, +2258694, +2258789, +2259005, +2259014, +2259069, +2259110, +2259165, +2259174, +2259325, +2259334, +2259397, +2259430, +2259461, +2259492, +2259525, +2259556, +2259601, +2259677, +2259697, +2259773, +2260005, +2260093, 2260996, 2262694, 2262789, @@ -3353,9 +3408,13 @@ 2283357, 2283528, 2283869, +2284040, +2284701, 2285572, 2286461, 2286501, +2286534, +2286565, 2286598, 2286661, 2286790, @@ -3444,6 +3503,11 @@ 2318141, 2318353, 2318685, +2324484, +2325553, +2325597, +2326024, +2326365, 2326532, 2326845, 2326852, @@ -3525,7 +3589,8 @@ 2353221, 2353265, 2353672, -2354013, +2353989, +2354045, 2356740, 2356797, 2357258, @@ -3551,8 +3616,16 @@ 2525220, 2525413, 2525917, +2526212, +2654077, 2654212, 2672893, +2891780, +2892741, +2893126, +2893221, +2893320, +2893661, 2949124, 2967357, 2967556, @@ -3585,6 +3658,12 @@ 2977565, 2977700, 2978333, +2992131, +2992228, +2993507, +2993585, +2993672, +2994013, 3000320, 3001345, 3002378, @@ -3610,7 +3689,7 @@ 3211037, 3211268, 3250909, -3252228, +3252196, 3252541, 3538435, 3538589, @@ -3643,6 +3722,11 @@ 3642353, 3642394, 3642525, +3768341, +3776008, +3776349, +3776533, +3790493, 3792901, 3794397, 3794437, @@ -3827,6 +3911,13 @@ 3972485, 3972616, 3972957, +3979780, +3980741, +3980804, +3980840, +3981181, +3981297, +3981341, 3996676, 3996925, 3996932, @@ -3979,7 +4070,9 @@ 4133397, 4134365, 4134421, -4134493, +4134813, +4134933, +4135005, 4136981, 4147869, 4148245, @@ -3987,21 +4080,18 @@ 4148757, 4149181, 4149269, -4149565, -4149781, -4151261, -4151285, -4151517, +4149597, +4149749, +4151549, 4151765, -4152221, -4152341, -4152637, +4152253, +4152309, +4152669, 4152853, 4153149, 4153365, 4158077, 4158101, -4159869, 4161032, 4161373, 4194308, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/EditView.cxx new/scintilla/src/EditView.cxx --- old/scintilla/src/EditView.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/EditView.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -602,7 +602,7 @@ // Fill the LineLayout bidirectional data fields according to each char style void EditView::UpdateBidiData(const EditModel &model, const ViewStyle &vstyle, LineLayout *ll) { - if (model.BidirectionalEnabled()) { + if (model.BidirectionalEnabled() && (ll->numCharsInLine >= 0)) { ll->EnsureBidiData(); for (int stylesInLine = 0; stylesInLine < ll->numCharsInLine; stylesInLine++) { ll->bidiData->stylesFonts[stylesInLine] = vstyle.styles[ll->styles[stylesInLine]].font; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/Editor.cxx new/scintilla/src/Editor.cxx --- old/scintilla/src/Editor.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/Editor.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -715,7 +715,7 @@ sel = Selection(serialized); sel.Truncate(pdoc->Length()); SetRectangularRange(); - InvalidateStyleRedraw(); + Redraw(); } } @@ -2434,6 +2434,7 @@ } } newPos = -1; // Used selection from stack so don't use position returned from undo/redo. + Redraw(); } } if (newPos >= 0) @@ -4154,6 +4155,12 @@ void Editor::Indent(bool forwards, bool lineIndent) { UndoGroup ug(pdoc); + // Avoid problems with recalculating rectangular range multiple times by temporarily + // treating rectangular selection as multiple stream selection. + const Selection::SelTypes selType = sel.selType; + if (sel.IsRectangular()) { + sel.selType = Selection::SelTypes::stream; + } for (size_t r=0; r<sel.Count(); r++) { const Sci::Line lineOfAnchor = pdoc->SciLineFromPosition(sel.Range(r).anchor.Position()); @@ -4230,6 +4237,8 @@ } } } + sel.selType = selType; // Restore rectangular mode + ThinRectangularRange(); ContainerNeedsUpdate(Update::Selection); } @@ -7153,7 +7162,6 @@ case Message::SetUseTabs: pdoc->useTabs = wParam != 0; - InvalidateStyleRedraw(); break; case Message::GetUseTabs: @@ -9135,7 +9143,7 @@ return DefWndProc(iMessage, wParam, lParam); } - // If there was a change that needs its selection saved and it wasn't explicity saved + // If there was a change that needs its selection saved and it wasn't explicitly saved // then do that here. RememberCurrentSelectionForRedoOntoStack(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/PositionCache.cxx new/scintilla/src/PositionCache.cxx --- old/scintilla/src/PositionCache.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/PositionCache.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -167,22 +167,20 @@ } int LineLayout::SubLineFromPosition(int posInLine, PointEnd pe) const noexcept { - if (!lineStarts || (posInLine > maxLineLength)) { + if (lines <= 1 || (posInLine >= numCharsBeforeEOL)) { return lines - 1; } - for (int line = 0; line < lines; line++) { - if (FlagSet(pe, PointEnd::subLineEnd)) { - // Return subline not start of next - if (lineStarts[line + 1] <= posInLine + 1) - return line; - } else { - if (lineStarts[line + 1] <= posInLine) - return line; + // Return subline not start of next for PointEnd::subLineEnd + posInLine -= FlagSet(pe, PointEnd::subLineEnd) ? 1 : 0; + int line = 1; + for (; line < lines; line++) { + if (lineStarts[line] > posInLine) { + break; } } - return lines - 1; + return line - 1; } void LineLayout::AddLineStart(Sci::Position start) { @@ -317,7 +315,7 @@ } int LineLayout::EndLineStyle() const noexcept { - return styles[numCharsBeforeEOL > 0 ? numCharsBeforeEOL-1 : 0]; + return styles[std::max(numCharsBeforeEOL - 1, 0)]; } void LineLayout::WrapLine(const Document *pdoc, Sci::Position posLineStart, Wrap wrapState, XYPOSITION wrapWidth) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/RunStyles.cxx new/scintilla/src/RunStyles.cxx --- old/scintilla/src/RunStyles.cxx 2024-12-17 22:31:25.000000000 +0100 +++ new/scintilla/src/RunStyles.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -321,7 +321,7 @@ template class Scintilla::Internal::RunStyles<int, int>; template class Scintilla::Internal::RunStyles<int, char>; -#if (PTRDIFF_MAX != INT_MAX) || defined(__HAIKU__) +#if (PTRDIFF_MAX != INT_MAX) || defined(__HAIKU__) || defined(PTRDIFF_DOESNT_ALIAS_INT) template class Scintilla::Internal::RunStyles<ptrdiff_t, int>; template class Scintilla::Internal::RunStyles<ptrdiff_t, char>; #endif diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/Selection.cxx new/scintilla/src/Selection.cxx --- old/scintilla/src/Selection.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/Selection.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -29,23 +29,24 @@ // Generically convert a string to a integer value throwing if the conversion failed. // Failures include values that are out of range for the destination variable. template <typename T> -void ValueFromString(std::string_view sv, T &value) { +void ValueFromString(std::string_view &sv, T &value) { const std::from_chars_result res = std::from_chars(sv.data(), sv.data() + sv.size(), value); if (res.ec != std::errc{}) { if (res.ec == std::errc::result_out_of_range) throw std::runtime_error("from_chars out of range."); throw std::runtime_error("from_chars failed."); } + sv.remove_prefix(res.ptr - sv.data()); } } -SelectionPosition::SelectionPosition(std::string_view sv) : position(0) { - if (const size_t v = sv.find('v'); v != std::string_view::npos) { - ValueFromString(sv.substr(v + 1), virtualSpace); - sv = sv.substr(0, v); - } +SelectionPosition::SelectionPosition(std::string_view &sv) : position(0) { ValueFromString(sv, position); + if (!sv.empty() && sv.front() == 'v') { + sv.remove_prefix(1); + ValueFromString(sv, virtualSpace); + } } void SelectionPosition::MoveForInsertDelete(bool insertion, Sci::Position startChange, Sci::Position length, bool moveForEqual) noexcept { @@ -109,14 +110,13 @@ return result; } -SelectionRange::SelectionRange(std::string_view sv) { - const size_t dash = sv.find('-'); - if (dash == std::string_view::npos) { - anchor = SelectionPosition(sv); +SelectionRange::SelectionRange(std::string_view &sv) { + anchor = SelectionPosition(sv); + if (sv.empty() || sv.front() != '-') { caret = anchor; } else { - anchor = SelectionPosition(sv.substr(0, dash)); - caret = SelectionPosition(sv.substr(dash + 1)); + sv.remove_prefix(1); + caret = SelectionPosition(sv); } } @@ -274,10 +274,13 @@ sv.remove_prefix(1); } - // Non-zero main index at end after '#' - if (const size_t hash = sv.find('#'); hash != std::string_view::npos) { - ValueFromString(sv.substr(hash + 1), mainRange); - sv = sv.substr(0, hash); + // Non-zero main index at start after '#' + if (!sv.empty() && sv.front() == '#') { + sv.remove_prefix(1); + ValueFromString(sv, mainRange); + if (!sv.empty() && sv.front() == ',') { + sv.remove_prefix(1); + } } // Remainder is list of ranges @@ -288,13 +291,12 @@ ranges.emplace_back(SelectionPosition(0)); } } else { - size_t comma = sv.find(','); - while (comma != std::string_view::npos) { - ranges.emplace_back(sv.substr(0, comma)); - sv.remove_prefix(comma + 1); - comma = sv.find(','); + while (!sv.empty()) { + if (sv.front() == ',') { + sv.remove_prefix(1); + } + ranges.emplace_back(sv); } - ranges.emplace_back(sv); if (mainRange >= ranges.size()) { mainRange = ranges.size() - 1; } @@ -595,6 +597,11 @@ // No prefix. break; } + if (mainRange > 0) { + result += '#'; + result += std::to_string(mainRange); + result += ','; + } if (selType == SelTypes::rectangle || selType == SelTypes::thin) { result += rangeRectangular.ToString(); } else { @@ -606,10 +613,5 @@ } } - if (mainRange > 0) { - result += '#'; - result += std::to_string(mainRange); - } - return result; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/src/Selection.h new/scintilla/src/Selection.h --- old/scintilla/src/Selection.h 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/src/Selection.h 2025-11-10 05:34:29.000000000 +0100 @@ -20,7 +20,7 @@ if (virtualSpace < 0) virtualSpace = 0; } - explicit SelectionPosition(std::string_view sv); + explicit SelectionPosition(std::string_view &sv); void Reset() noexcept { position = 0; virtualSpace = 0; @@ -121,7 +121,7 @@ } constexpr SelectionRange(Sci::Position caret_, Sci::Position anchor_) noexcept : caret(caret_), anchor(anchor_) { } - explicit SelectionRange(std::string_view sv); + explicit SelectionRange(std::string_view &sv); SelectionSegment AsSegment() const noexcept { return {caret, anchor}; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/test/XiteWin.py new/scintilla/test/XiteWin.py --- old/scintilla/test/XiteWin.py 2024-03-19 05:36:37.000000000 +0100 +++ new/scintilla/test/XiteWin.py 2025-11-10 05:34:29.000000000 +0100 @@ -28,7 +28,8 @@ sys.path.append(scintillaScriptsDirectory) import Face -scintillaBinDirectory = os.path.join(scintillaDirectory, "bin") +# To debug a particular Scintilla build, set environment variable SCINTILLA_BIN to its directory +scintillaBinDirectory = os.environ.get('SCINTILLA_BIN', os.path.join(scintillaDirectory, "bin")) lexillaDirectory = os.path.join(scintillaDirectory, "..", "lexilla") lexillaBinDirectory = os.path.join(lexillaDirectory, "bin") @@ -54,6 +55,7 @@ WS_VISIBLE = 0x10000000 WS_HSCROLL = 0x100000 WS_VSCROLL = 0x200000 +CS_GLOBALCLASS = 0x4000 WA_INACTIVE = 0 MF_POPUP = 16 MF_SEPARATOR = 0x800 @@ -139,12 +141,12 @@ ('lpzClassName', LPCWSTR), ) -hinst = ctypes.windll.kernel32.GetModuleHandleW(0) +hinst = None def RegisterClass(name, func, background = 0): # register a window class for toplevel windows. wc = WNDCLASS() - wc.style = 0 + wc.style = CS_GLOBALCLASS wc.lpfnWndProc = func wc.cls_extra = 0 wc.wnd_extra = 0 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/test/simpleTests.py new/scintilla/test/simpleTests.py --- old/scintilla/test/simpleTests.py 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/test/simpleTests.py 2025-11-10 05:34:29.000000000 +0100 @@ -312,6 +312,24 @@ self.assertEqual(self.ed.Contents(), b"\tx\tb") self.assertEqual(self.ed.GetLineIndentPosition(0), 1) + def testRectangularIndent(self): + self.ed.VirtualSpaceOptions = 3 + self.ed.AddText(3, b"\n\n\n") + self.ed.RectangularSelectionAnchor = 2 + self.ed.RectangularSelectionCaret = 0 + self.ed.TabIndents = 0 + self.ed.UseTabs = 1 + self.ed.Tab() + self.assertEqual(self.ed.Contents(), b"\t\n\t\n\t\n") + self.assertEqual(self.ed.GetSelectionSerialized(), b'T#2,5-1') + self.assertEqual(self.ed.GetSelectionNAnchor(0), 5) + self.assertEqual(self.ed.GetSelectionNCaret(0), 5) + self.assertEqual(self.ed.GetSelectionNAnchor(1), 3) + self.assertEqual(self.ed.GetSelectionNCaret(1), 3) + self.assertEqual(self.ed.GetSelectionNAnchor(2), 1) + self.assertEqual(self.ed.GetSelectionNCaret(2), 1) + self.ed.VirtualSpaceOptions = 0 + def testGetCurLine(self): self.ed.AddText(1, b"x") data = ctypes.create_string_buffer(b"\0" * 100) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/test/unit/testSelection.cxx new/scintilla/test/unit/testSelection.cxx --- old/scintilla/test/unit/testSelection.cxx 2025-02-24 22:46:04.000000000 +0100 +++ new/scintilla/test/unit/testSelection.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -115,18 +115,21 @@ const std::string invalidString(invalid.ToString()); REQUIRE(invalidString == "-1"); - const SelectionPosition invalidReturned(invalidString); + std::string_view sv = invalidString; + const SelectionPosition invalidReturned(sv); REQUIRE(invalidReturned == invalid); const std::string zeroString(zero.ToString()); REQUIRE(zeroString == "0"); - const SelectionPosition zeroReturned(zeroString); + sv = zeroString; + const SelectionPosition zeroReturned(sv); REQUIRE(zeroReturned == zero); const SelectionPosition virtue(2, 3); const std::string virtueString(virtue.ToString()); REQUIRE(virtueString == "2v3"); - const SelectionPosition virtueReturned(virtueString); + sv = virtueString; + const SelectionPosition virtueReturned(sv); REQUIRE(virtueReturned == virtue); } @@ -156,9 +159,10 @@ // Range from 1 to 2 with 3 virtual spaces const SelectionRange range123(SelectionPosition(2, 3), SelectionPosition(1)); const std::string range123String(range123.ToString()); - // Opposite order to constructor: from anchor to caret + // Opposite order to constructor: from anchor to caret REQUIRE(range123String == "1-2v3"); - const SelectionRange range123Returned(range123String); + std::string_view sv = range123String; + const SelectionRange range123Returned(sv); REQUIRE(range123Returned == range123); } @@ -200,7 +204,7 @@ SECTION("Selection") { Selection sel; - + REQUIRE(sel.selType == Selection::SelTypes::stream); REQUIRE(!sel.IsRectangular()); REQUIRE(sel.Count() == 1); @@ -220,9 +224,9 @@ Selection selection; selection.SetSelection(range532); const std::string selectionString(selection.ToString()); - // Opposite order to constructor: from anchor to caret + // Opposite order to constructor: from anchor to caret REQUIRE(selectionString == "5v3-2"); - const SelectionRange selectionReturned(selectionString); + selection = Selection(selectionString); REQUIRE(selection.selType == Selection::SelTypes::stream); REQUIRE(!selection.IsRectangular()); @@ -246,8 +250,8 @@ selection.AddSelection(range1); selection.SetMain(1); const std::string selectionString(selection.ToString()); - REQUIRE(selectionString == "5v3-2,1#1"); - const SelectionRange selectionReturned(selectionString); + REQUIRE(selectionString == "#1,5v3-2,1"); + selection = Selection(selectionString); REQUIRE(selection.selType == Selection::SelTypes::stream); REQUIRE(!selection.IsRectangular()); @@ -266,7 +270,7 @@ // Range from 5 with 3 virtual spaces to 2 const SelectionRange range532(SelectionPosition(2), SelectionPosition(5, 3)); - + // Create a single-line rectangular selection Selection selection; selection.selType = Selection::SelTypes::rectangle; @@ -276,7 +280,7 @@ const std::string selectionString(selection.ToString()); REQUIRE(selectionString == "R5v3-2"); - const Selection selectionReturned(selectionString); + selection = Selection(selectionString); REQUIRE(selection.selType == Selection::SelTypes::rectangle); REQUIRE(selection.IsRectangular()); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/version.txt new/scintilla/version.txt --- old/scintilla/version.txt 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/version.txt 2025-11-10 05:34:29.000000000 +0100 @@ -1 +1 @@ -557 +558 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/win32/ListBox.cxx new/scintilla/win32/ListBox.cxx --- old/scintilla/win32/ListBox.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/win32/ListBox.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -77,6 +77,13 @@ return reinterpret_cast<void *>(lParam); } +// These are reasonable initial guesses that may be refined by measurement or calls. +constexpr SIZE sizeList { 150, 80 }; +constexpr int commonLineHeight = 10; +constexpr unsigned int commonCharacterWidth = 8; +constexpr int commonItemLength = 12; +constexpr int defaultVisibleRows = 9; + struct ListItemData { const char *text; int pixId; @@ -115,11 +122,11 @@ } }; -const TCHAR ListBoxX_ClassName[] = TEXT("ListBoxX"); +const TCHAR *ListBoxX_ClassName = TEXT("ListBoxX"); ColourRGBA ColourElement(std::optional<ColourRGBA> colour, int nIndex) { if (colour.has_value()) { - return colour.value(); + return colour.value().Opaque(); } return ColourFromSys(nIndex); } @@ -143,7 +150,7 @@ } class ListBoxX : public ListBox { - int lineHeight = 10; + int lineHeight = commonLineHeight; HFONT fontCopy {}; std::unique_ptr<FontWin> fontWin; Technology technology = Technology::Default; @@ -152,9 +159,9 @@ HWND lb {}; bool unicodeMode = false; int codePage = 0; - int desiredVisibleRows = 9; + int desiredVisibleRows = defaultVisibleRows; int maxItemCharacters = 0; - unsigned int aveCharWidth = 8; + unsigned int aveCharWidth = commonCharacterWidth; Window *parent = nullptr; WNDPROC prevWndProc{}; int ctrlID = 0; @@ -248,10 +255,11 @@ HWND hwndParent = HwndFromWindow(*parent); HINSTANCE hinstanceParent = GetWindowInstance(hwndParent); // Window created as popup so not clipped within parent client area + constexpr int startPosition = 100; // Arbitrary as will be moved immediately wid = ::CreateWindowEx( WS_EX_WINDOWEDGE, ListBoxX_ClassName, TEXT(""), WS_POPUP | frameStyle, - 100,100, 150,80, hwndParent, + startPosition,startPosition, sizeList.cx,sizeList.cy, hwndParent, {}, hinstanceParent, this); @@ -272,7 +280,8 @@ fontCopy = pfm->HFont(); SetWindowFont(lb, fontCopy, 0); fontWin = pfm->Duplicate(); - codePage = unicodeMode ? CpUtf8 : CodePageFromCharSet(fontWin->GetCharacterSet(), 1252); + codePage = unicodeMode ? CpUtf8 : + CodePageFromCharSet(fontWin->GetCharacterSet(), codePageWindowsLatin); graphics.Release(); } } @@ -303,7 +312,6 @@ int width = MinClientWidth(); int textSize = 0; - int averageCharWidth = 8; // Make a measuring surface std::unique_ptr<Surface> surfaceItem(Surface::Allocate(technology)); @@ -320,7 +328,7 @@ } maxCharWidth = static_cast<int>(std::ceil(surfaceItem->WidthText(fontWin.get(), "W"))); - averageCharWidth = static_cast<int>(surfaceItem->AverageCharWidth(fontWin.get())); + const int averageCharWidth = static_cast<int>(surfaceItem->AverageCharWidth(fontWin.get())); width = std::max({ width, textSize, (maxItemCharacters + 1) * averageCharWidth }); @@ -534,16 +542,13 @@ } int ListBoxX::ItemHeight() const noexcept { - int itemHeight = lineHeight + (TextInset.y * 2); + const int itemHeight = lineHeight + (TextInset.y * 2); const int pixHeight = images.GetHeight() + (ImageInset.y * 2); - if (itemHeight < pixHeight) { - itemHeight = pixHeight; - } - return itemHeight; + return std::max(itemHeight, pixHeight); } int ListBoxX::MinClientWidth() const noexcept { - return 12 * (aveCharWidth+aveCharWidth/3); + return commonItemLength * (aveCharWidth+aveCharWidth/3); } POINT ListBoxX::MinTrackSize() const noexcept { @@ -556,7 +561,7 @@ POINT ListBoxX::MaxTrackSize() const noexcept { PRectangle rc = PRectangle::FromInts(0, 0, std::max<int>(static_cast<unsigned int>(MinClientWidth()), - maxCharWidth * maxItemCharacters + TextInset.x * 2 + + (maxCharWidth * maxItemCharacters) + (TextInset.x * 2) + TextOffset() + SystemMetricsForDpi(SM_CXVSCROLL, dpi)), ItemHeight() * lti.Count()); AdjustWindowRect(&rc, dpi); @@ -743,7 +748,7 @@ } void ListBoxX::AllocateBitMap() { - const SIZE extent { GetClientExtent().x, lineHeight }; + const SIZE extent { GetClientExtent().x, ItemHeight() }; graphics.bm.Create({}, extent.cx, -extent.cy, nullptr); if (!graphics.bm) { @@ -843,7 +848,7 @@ 0, WC_LISTBOXW, L"", WS_CHILD | WS_VSCROLL | WS_VISIBLE | LBS_OWNERDRAWFIXED | LBS_NODATA | LBS_NOINTEGRALHEIGHT, - 0, 0, 150,80, hWnd, + 0, 0, sizeList.cx, sizeList.cy, hWnd, reinterpret_cast<HMENU>(static_cast<ptrdiff_t>(ctrlID)), hinstanceParent, nullptr); @@ -932,10 +937,7 @@ const int nRows = GetVisibleRows(); int linesToScroll = std::clamp(nRows - 1, 1, 3); linesToScroll *= wheelDelta.Actions(); - int top = ListBox_GetTopIndex(lb) + linesToScroll; - if (top < 0) { - top = 0; - } + const int top = std::max(0, ListBox_GetTopIndex(lb) + linesToScroll); ListBox_SetTopIndex(lb, top); } break; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/win32/PlatWin.h new/scintilla/win32/PlatWin.h --- old/scintilla/win32/PlatWin.h 2025-04-01 23:08:29.000000000 +0200 +++ new/scintilla/win32/PlatWin.h 2025-11-10 05:34:29.000000000 +0100 @@ -18,6 +18,8 @@ // Used for defining font size with LOGFONT constexpr int pointsPerInch = 72; +constexpr UINT codePageWindowsLatin = 1252; + extern void Platform_Initialise(void *hInstance) noexcept; extern void Platform_Finalise(bool fromDllMain) noexcept; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/win32/ScintRes.rc new/scintilla/win32/ScintRes.rc --- old/scintilla/win32/ScintRes.rc 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/win32/ScintRes.rc 2025-11-10 05:34:29.000000000 +0100 @@ -4,8 +4,8 @@ #include <windows.h> -#define VERSION_SCINTILLA "5.5.7" -#define VERSION_WORDS 5, 5, 7, 0 +#define VERSION_SCINTILLA "5.5.8" +#define VERSION_WORDS 5, 5, 8, 0 VS_VERSION_INFO VERSIONINFO FILEVERSION VERSION_WORDS diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/win32/Scintilla.vcxproj new/scintilla/win32/Scintilla.vcxproj --- old/scintilla/win32/Scintilla.vcxproj 2025-04-01 23:08:29.000000000 +0200 +++ new/scintilla/win32/Scintilla.vcxproj 2025-11-10 05:34:29.000000000 +0100 @@ -86,7 +86,7 @@ <WarningLevel>Level4</WarningLevel> <PreprocessorDefinitions>_USRDLL;%(PreprocessorDefinitions)</PreprocessorDefinitions> <AdditionalIncludeDirectories>..\include;..\src;</AdditionalIncludeDirectories> - <BrowseInformation>true</BrowseInformation> + <BrowseInformation>false</BrowseInformation> <MultiProcessorCompilation>true</MultiProcessorCompilation> <MinimalRebuild>false</MinimalRebuild> <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/scintilla/win32/ScintillaWin.cxx new/scintilla/win32/ScintillaWin.cxx --- old/scintilla/win32/ScintillaWin.cxx 2025-06-08 00:59:06.000000000 +0200 +++ new/scintilla/win32/ScintillaWin.cxx 2025-11-10 05:34:29.000000000 +0100 @@ -1628,8 +1628,8 @@ return CpUtf8; } switch (characterSet) { - case CharacterSet::Ansi: return 1252; - case CharacterSet::Default: return documentCodePage ? documentCodePage : 1252; + case CharacterSet::Ansi: return codePageWindowsLatin; + case CharacterSet::Default: return documentCodePage ? documentCodePage : codePageWindowsLatin; case CharacterSet::Baltic: return 1257; case CharacterSet::ChineseBig5: return 950; case CharacterSet::EastEurope: return 1250;
