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(&lt;unused&gt;, char 
*selectionString) &rarr; 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 &rarr; 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) &rarr; 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 
&rarr; int</a><br />
      <a class="message" href="#SCI_AUTOCSETSTYLE">SCI_AUTOCSETSTYLE(int 
style)</a><br />
      <a class="message" href="#SCI_AUTOCGETSTYLE">SCI_AUTOCGETSTYLE &rarr; 
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 
&rarr; 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>&nbsp;&nbsp;
-       <a href="https://www.scintilla.org/scintilla557.tgz";>
+       <a href="https://www.scintilla.org/scintilla558.tgz";>
           GTK/Linux</a>&nbsp;&nbsp;
        </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%">
           &nbsp;
@@ -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;

Reply via email to