Re: Scintilla GTK 4 port

Neil Hodgson <[email protected]> Tue, 9 Dec 2025 11:59:05 +1100
Newsgroups gmane.comp.lib.scintilla.devel
Message-ID <CACWkrTgreLH_Uog9+1dgkqD8McvstJq2jeFMm1YTqK=Uw6WojA@mail.gmail.com>
--000000000000cc988c06457a6bef
Content-Type: text/plain; charset="UTF-8"

Here is a patch to implement clearing the view to a base colour early
in drawing so that seams will be less prominent with fractional
scaling.

It is set as an element (SC_ELEMENT_BASE_BACKGROUND) which allows
platform layers to set a default and track system modes (like dark
mode).

It doesn't prevent all seams and works best when there is a common
background colour set for each style which is the same as
SC_ELEMENT_BASE_BACKGROUND.

This does not try to avoid drawing again in the same colour for text
run backgrounds. That would require many more changes as the
background is drawn separately by different feature implementations.

What should be checked here is that the new code is in the right place
to ensure better behaviour while not also causing background colour
flashing or other problems.

Neil

-- 
You received this message because you are subscribed to the Google Groups "scintilla-interest" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [email protected].
To view this discussion visit https://groups.google.com/d/msgid/scintilla-interest/CACWkrTgreLH_Uog9%2B1dgkqD8McvstJq2jeFMm1YTqK%3DUw6WojA%40mail.gmail.com.

--000000000000cc988c06457a6bef
Content-Type: text/plain; charset="US-ASCII"; name="BaseBackground.patch"
Content-Disposition: attachment; filename="BaseBackground.patch"
Content-Transfer-Encoding: base64
Content-ID: <f_mixvgueb0>
X-Attachment-Id: f_mixvgueb0

ZGlmZiAtciBhYzZhMmQzNzlmMjUgZG9jL1NjaW50aWxsYURvYy5odG1sCi0tLSBhL2RvYy9TY2lu
dGlsbGFEb2MuaHRtbAlNb24gRGVjIDA4IDE0OjM4OjA3IDIwMjUgKzExMDAKKysrIGIvZG9jL1Nj
aW50aWxsYURvYy5odG1sCVR1ZSBEZWMgMDkgMTE6NDQ6MDEgMjAyNSArMTEwMApAQCAtMzkxMSw2
ICszOTExLDEyIEBACiAgICAgIG9uIENvY29hLCBzZWxlY3Rpb24gYmFja2dyb3VuZCBjb2xvdXJz
IGxpa2UgPGNvZGU+U0NfRUxFTUVOVF9TRUxFQ1RJT05fQkFDSzwvY29kZT4gYXJlIHByb3ZpZGVk
LgogICAgICA8L3A+CiAKKyAgICAgPHA+T3B0aW9uYWwgPGNvZGU+U0NfRUxFTUVOVF9CQVNFX0JB
Q0tHUk9VTkQ8L2NvZGU+IG1heSBiZSB1c2VkIHRvIGRlY3JlYXNlIHZpc2libGUgc2VhbXMgaW4K
KyAgICAgYmFja2dyb3VuZCBjb2xvdXJzIG9uIHNvbWUgcGxhdGZvcm1zIHdpdGggZnJhY3Rpb25h
bCBzY2FsaW5nLgorICAgICBJdCB3aWxsIG5vdCBwcmV2ZW50IGFsbCBzZWFtcyBhbmQgaXMgbW9z
dCBlZmZlY3RpdmUgd2hlbiB0aGVyZSBpcyBhIGNvbW1vbiBiYWNrZ3JvdW5kIGNvbG91ci4KKyAg
ICAgSXRzIGJlaGF2aW91ciBpcyBwbGF0Zm9ybSBkZXBlbmRlbnQuCisgICAgIDwvcD4KKwogICAg
ICA8dGFibGUgY2xhc3M9InN0YW5kYXJkIiBzdW1tYXJ5PSJFbGVtZW50cyI+CiAgICAgICA8dGhl
YWQgYWxpZ249ImxlZnQiPgogICAgICAgICA8dHI+CkBAIC00MTEyLDYgKzQxMTgsMTQgQEAKICAg
ICAgICAgICAgPHRkPjwvdGQ+CiAgICAgICAgICAgIDx0ZD5Db2xvdXIgb2YgbGluZSBkcmF3biB0
byBzaG93IHRoZXJlIGFyZSBsaW5lcyBoaWRkZW4gYXQgdGhhdCBwb2ludDwvdGQ+CiAgICAgICAg
ICA8L3RyPgorICAgICAgICAgPHRyPgorICAgICAgICAgICA8dGggYWxpZ249ImxlZnQiPjxjb2Rl
PlNDX0VMRU1FTlRfQkFTRV9CQUNLR1JPVU5EPC9jb2RlPjwvdGg+CisgICAgICAgICAgIDx0ZD45
MDwvdGQ+CisgICAgICAgICAgIDx0ZD5PcGFxdWU8L3RkPgorICAgICAgICAgICA8dGQ+QWxsPC90
ZD4KKyAgICAgICAgICAgPHRkPjwvdGQ+CisgICAgICAgICAgIDx0ZD5Db2xvdXIgdGhhdCB3aWxs
IG9wdGlvbmFsbHkgYmUgdXNlZCB0byBjbGVhciB2aWV3IGJlZm9yZSBvdGhlciBkcmF3aW5nPC90
ZD4KKyAgICAgICAgIDwvdHI+CiAgICAgICAgPC90Ym9keT4KICAgICAgPC90YWJsZT4KIApkaWZm
IC1yIGFjNmEyZDM3OWYyNSBpbmNsdWRlL1NjaW50aWxsYS5oCi0tLSBhL2luY2x1ZGUvU2NpbnRp
bGxhLmgJTW9uIERlYyAwOCAxNDozODowNyAyMDI1ICsxMTAwCisrKyBiL2luY2x1ZGUvU2NpbnRp
bGxhLmgJVHVlIERlYyAwOSAxMTo0NDowMSAyMDI1ICsxMTAwCkBAIC0zMTgsNiArMzE4LDcgQEAK
ICNkZWZpbmUgU0NfRUxFTUVOVF9IT1RfU1BPVF9BQ1RJVkVfQkFDSyA3MQogI2RlZmluZSBTQ19F
TEVNRU5UX0ZPTERfTElORSA4MAogI2RlZmluZSBTQ19FTEVNRU5UX0hJRERFTl9MSU5FIDgxCisj
ZGVmaW5lIFNDX0VMRU1FTlRfQkFTRV9CQUNLR1JPVU5EIDkwCiAjZGVmaW5lIFNDSV9TRVRFTEVN
RU5UQ09MT1VSIDI3NTMKICNkZWZpbmUgU0NJX0dFVEVMRU1FTlRDT0xPVVIgMjc1NAogI2RlZmlu
ZSBTQ0lfUkVTRVRFTEVNRU5UQ09MT1VSIDI3NTUKZGlmZiAtciBhYzZhMmQzNzlmMjUgaW5jbHVk
ZS9TY2ludGlsbGEuaWZhY2UKLS0tIGEvaW5jbHVkZS9TY2ludGlsbGEuaWZhY2UJTW9uIERlYyAw
OCAxNDozODowNyAyMDI1ICsxMTAwCisrKyBiL2luY2x1ZGUvU2NpbnRpbGxhLmlmYWNlCVR1ZSBE
ZWMgMDkgMTE6NDQ6MDEgMjAyNSArMTEwMApAQCAtNzQ3LDYgKzc0Nyw3IEBACiB2YWwgU0NfRUxF
TUVOVF9IT1RfU1BPVF9BQ1RJVkVfQkFDSz03MQogdmFsIFNDX0VMRU1FTlRfRk9MRF9MSU5FPTgw
CiB2YWwgU0NfRUxFTUVOVF9ISURERU5fTElORT04MQordmFsIFNDX0VMRU1FTlRfQkFTRV9CQUNL
R1JPVU5EPTkwCiAKICMgU2V0IHRoZSBjb2xvdXIgb2YgYW4gZWxlbWVudC4gVHJhbnNsdWNlbmN5
IChhbHBoYSkgbWF5IG9yIG1heSBub3QgYmUgc2lnbmlmaWNhbnQKICMgYW5kIHRoaXMgbWF5IGRl
cGVuZCBvbiB0aGUgcGxhdGZvcm0uIFRoZSBhbHBoYSBieXRlIHNob3VsZCBjb21tb25seSBiZSAw
eGZmIGZvciBvcGFxdWUuCmRpZmYgLXIgYWM2YTJkMzc5ZjI1IGluY2x1ZGUvU2NpbnRpbGxhVHlw
ZXMuaAotLS0gYS9pbmNsdWRlL1NjaW50aWxsYVR5cGVzLmgJTW9uIERlYyAwOCAxNDozODowNyAy
MDI1ICsxMTAwCisrKyBiL2luY2x1ZGUvU2NpbnRpbGxhVHlwZXMuaAlUdWUgRGVjIDA5IDExOjQ0
OjAxIDIwMjUgKzExMDAKQEAgLTIwMSw2ICsyMDEsNyBAQAogCUhvdFNwb3RBY3RpdmVCYWNrID0g
NzEsCiAJRm9sZExpbmUgPSA4MCwKIAlIaWRkZW5MaW5lID0gODEsCisJQmFzZUJhY2tncm91bmQg
PSA5MCwKIH07CiAKIGVudW0gY2xhc3MgTGF5ZXIgewpkaWZmIC1yIGFjNmEyZDM3OWYyNSBzcmMv
RWRpdFZpZXcuY3h4Ci0tLSBhL3NyYy9FZGl0Vmlldy5jeHgJTW9uIERlYyAwOCAxNDozODowNyAy
MDI1ICsxMTAwCisrKyBiL3NyYy9FZGl0Vmlldy5jeHgJVHVlIERlYyAwOSAxMTo0NDowMSAyMDI1
ICsxMTAwCkBAIC0yNTI3LDYgKzI1MjcsMTAgQEAKIAkJZG91YmxlIGR1ckNvcHkgPSAwLjA7CiAJ
CUVsYXBzZWRQZXJpb2QgZXBXaG9sZTsKICNlbmRpZgorCQlpZiAoQ29sb3VyT3B0aW9uYWwgYmFj
a2dyb3VuZCA9IHZzRHJhdy5FbGVtZW50Q29sb3VyKEVsZW1lbnQ6OkJhc2VCYWNrZ3JvdW5kKSkg
eworCQkJc3VyZmFjZS0+RmlsbFJlY3RhbmdsZUFsaWduZWQocmNUZXh0QXJlYSwgRmlsbChiYWNr
Z3JvdW5kLnZhbHVlKCkpKTsKKwkJfQorCiAJCWNvbnN0IGJvb2wgYnJhY2VzSWdub3JlU3R5bGUg
PSAoKHZzRHJhdy5icmFjZUhpZ2hsaWdodEluZGljYXRvclNldCAmJiAobW9kZWwuYnJhY2VzTWF0
Y2hTdHlsZSA9PSBTdHlsZUJyYWNlTGlnaHQpKSB8fAogCQkJKHZzRHJhdy5icmFjZUJhZExpZ2h0
SW5kaWNhdG9yU2V0ICYmIChtb2RlbC5icmFjZXNNYXRjaFN0eWxlID09IFN0eWxlQnJhY2VCYWQp
KSk7CiAKQEAgLTI2MTAsNiArMjYxNCw5IEBACiAJCQkJCQkJeXBvc1NjcmVlbiArIHZzRHJhdy5s
aW5lSGVpZ2h0KTsKIAkJCQkJCXBpeG1hcExpbmUtPkZsdXNoRHJhd2luZygpOwogCQkJCQkJc3Vy
ZmFjZVdpbmRvdy0+Q29weShyY0NvcHlBcmVhLCBmcm9tLCAqcGl4bWFwTGluZSk7CisJCQkJCQlp
ZiAoQ29sb3VyT3B0aW9uYWwgYmFja2dyb3VuZCA9IHZzRHJhdy5FbGVtZW50Q29sb3VyKEVsZW1l
bnQ6OkJhc2VCYWNrZ3JvdW5kKSkgeworCQkJCQkJCXBpeG1hcExpbmUtPkZpbGxSZWN0YW5nbGVB
bGlnbmVkKFBSZWN0YW5nbGUoMCwgMCwgcmNDbGllbnQuV2lkdGgoKSwgdnNEcmF3LmxpbmVIZWln
aHQpLCBGaWxsKGJhY2tncm91bmQudmFsdWUoKSkpOworCQkJCQkJfQogCQkJCQl9CiAKIAkJCQkJ
bGluZVdpZHRoTWF4U2VlbiA9IHN0ZDo6bWF4KAo=
--000000000000cc988c06457a6bef--