[geany/geany] acebc2: scintilla: Accessible: emit the text deletion signal before deletion
Colomban Wendling
git-noreply at xxxxx
Wed Apr 17 21:15:19 UTC 2019
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Wed, 17 Apr 2019 21:15:19 UTC
Commit: acebc2d6db11b7ba05a4fecbfbddb511ab9d8114
https://github.com/geany/geany/commit/acebc2d6db11b7ba05a4fecbfbddb511ab9d8114
Log Message:
-----------
scintilla: Accessible: emit the text deletion signal before deletion
This allows the accessibility layer to request detail, such as which
characters have been deleted. ATK will query the deleted range to
report the data that was removed, so it must still be available for
the query to give a correct answer.
So, emit the signal in BEFOREDELETE instead of DELETETEXT.
X-Scintilla-Bug-URL: https://sourceforge.net/p/scintilla/bugs/2095/
X-Scintilla-Commit-ID: 0a937b4c0b2be02042473baed62543ff73d90807
Modified Paths:
--------------
scintilla/gtk/ScintillaGTKAccessible.cxx
scintilla/gtk/ScintillaGTKAccessible.h
Modified: scintilla/gtk/ScintillaGTKAccessible.cxx
10 lines changed, 3 insertions(+), 7 deletions(-)
===================================================================
@@ -156,7 +156,6 @@ ScintillaGTKAccessible *ScintillaGTKAccessible::FromAccessible(GtkAccessible *ac
ScintillaGTKAccessible::ScintillaGTKAccessible(GtkAccessible *accessible_, GtkWidget *widget_) :
accessible(accessible_),
sci(ScintillaGTK::FromWidget(widget_)),
- deletionLengthChar(0),
old_pos(-1) {
SetAccessibility(true);
g_signal_connect(widget_, "sci-notify", G_CALLBACK(SciNotify), this);
@@ -882,14 +881,11 @@ void ScintillaGTKAccessible::Notify(GtkWidget *, gint, SCNotification *nt) {
UpdateCursor();
}
if (nt->modificationType & SC_MOD_BEFOREDELETE) {
- // We cannot compute the deletion length in DELETETEXT as it requires accessing the
- // buffer, so that the character are still present. So, we cache the value here,
- // and use it in DELETETEXT that fires quickly after.
- deletionLengthChar = sci->pdoc->CountCharacters(nt->position, nt->position + nt->length);
+ int startChar = CharacterOffsetFromByteOffset(nt->position);
+ int lengthChar = sci->pdoc->CountCharacters(nt->position, nt->position + nt->length);
+ g_signal_emit_by_name(accessible, "text-changed::delete", startChar, lengthChar);
}
if (nt->modificationType & SC_MOD_DELETETEXT) {
- int startChar = CharacterOffsetFromByteOffset(nt->position);
- g_signal_emit_by_name(accessible, "text-changed::delete", startChar, deletionLengthChar);
UpdateCursor();
}
if (nt->modificationType & SC_MOD_CHANGESTYLE) {
Modified: scintilla/gtk/ScintillaGTKAccessible.h
2 lines changed, 0 insertions(+), 2 deletions(-)
===================================================================
@@ -18,8 +18,6 @@ class ScintillaGTKAccessible {
GtkAccessible *accessible;
ScintillaGTK *sci;
- // cached length of the deletion, in characters (see Notify())
- int deletionLengthChar;
// local state for comparing
Sci::Position old_pos;
std::vector<SelectionRange> old_sels;
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Commits
mailing list