-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
error while compiling under archlinux #110
Comments
|
Okay, so this is a Scintilla compile issue. If you don't mind, download and attempt to compile Scintilla (https://www.scintilla.org/ScintillaDownload.html) by going to the *gtk/* directory and running `make`. If you get the same build error, then I recommend you either contact the Scintilla mailing list (https://groups.google.com/forum/#!forum/scintilla-interest) or submit a bug report (https://sourceforge.net/p/scintilla/bugs/).
|
|
I thought it was an error but the compilation of Scintilla (5.10) actually finishes correctly despite many warnings. |
|
the Scintilla version download/used by TA (11.1) is 4.45 which does not compile (or not anymore). |
|
Unfortunately, 11.1 compiles for me on Ubuntu 20.04 without error. I confirm that it pulls down Scintilla 4.4.5. Perhaps this is an Archlinux-specific issue. You say Scintilla 5.1.0 compiles correctly, so try comparing gtk/ScintillaGtkAccessible.cxx between 5.1.0 and 4.4.5 to see if there have been any changes that might identify the problem.
|
|
there's a lot of changes between 4.45 and 5.10 and I'm unfortunately not comfortable with compilation and C code to see what could be wrong. # diff -u scintilla.4.45/gtk/ScintillaGTKAccessible.cxx scintilla.5.10/gtk/ScintillaGTKAccessible.cxx
--- scintilla.4.45/gtk/ScintillaGTKAccessible.cxx 2020-04-23 03:50:17.000000000 +0200
+++ scintilla.5.10/gtk/ScintillaGTKAccessible.cxx 2021-06-02 00:51:09.000000000 +0200
@@ -62,6 +62,8 @@
#include <string_view>
#include <vector>
#include <map>
+#include <set>
+#include <optional>
#include <algorithm>
#include <memory>
@@ -87,14 +89,19 @@
#endif
// ScintillaGTK.h and stuff it needs
-#include "Platform.h"
-
+#include "ScintillaTypes.h"
+#include "ScintillaMessages.h"
+#include "ScintillaStructures.h"
#include "ILoader.h"
#include "ILexer.h"
+
+#include "Debugging.h"
+#include "Geometry.h"
+#include "Platform.h"
+
#include "Scintilla.h"
#include "ScintillaWidget.h"
-#include "StringCopy.h"
-#include "CharacterCategory.h"
+#include "CharacterCategoryMap.h"
#include "Position.h"
#include "UniqueString.h"
#include "SplitVector.h"
@@ -127,6 +134,7 @@
#include "ScintillaGTKAccessible.h"
using namespace Scintilla;
+using namespace Scintilla::Internal;
struct ScintillaObjectAccessiblePrivate {
ScintillaGTKAccessible *pscin;
@@ -220,30 +228,30 @@
break;
case ATK_TEXT_BOUNDARY_WORD_START:
- startByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
- startByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 0);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+ startByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
+ startByte = sci->WndProc(Message::WordEndPosition, startByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, startByte, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 0);
break;
case ATK_TEXT_BOUNDARY_WORD_END:
- startByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 0);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 1);
+ startByte = sci->WndProc(Message::WordEndPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::WordEndPosition, startByte, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, startByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 1);
break;
case ATK_TEXT_BOUNDARY_LINE_START: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 1, 0);
- endByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 2, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line + 1, 0);
+ endByte = sci->WndProc(Message::PositionFromLine, line + 2, 0);
break;
}
case ATK_TEXT_BOUNDARY_LINE_END: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line + 1, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::GetLineEndPosition, line, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line + 1, 0);
break;
}
@@ -270,24 +278,24 @@
break;
case ATK_TEXT_BOUNDARY_WORD_START:
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 0);
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 1);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 0);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 1);
+ endByte = sci->WndProc(Message::WordStartPosition, byteOffset, 0);
+ endByte = sci->WndProc(Message::WordStartPosition, endByte, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, endByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 1);
break;
case ATK_TEXT_BOUNDARY_WORD_END:
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 0);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 1);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+ endByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordStartPosition, endByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, endByte, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 0);
break;
case ATK_TEXT_BOUNDARY_LINE_START: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- endByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ endByte = sci->WndProc(Message::PositionFromLine, line, 0);
if (line > 0) {
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line - 1, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line - 1, 0);
} else {
startByte = endByte;
}
@@ -295,14 +303,14 @@
}
case ATK_TEXT_BOUNDARY_LINE_END: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
if (line > 0) {
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 1, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line - 1, 0);
} else {
endByte = 0;
}
if (line > 1) {
- startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 2, 0);
+ startByte = sci->WndProc(Message::GetLineEndPosition, line - 2, 0);
} else {
startByte = endByte;
}
@@ -328,46 +336,46 @@
switch (boundaryType) {
case ATK_TEXT_BOUNDARY_CHAR:
startByte = byteOffset;
- endByte = sci->WndProc(SCI_POSITIONAFTER, byteOffset, 0);
+ endByte = sci->WndProc(Message::PositionAfter, byteOffset, 0);
break;
case ATK_TEXT_BOUNDARY_WORD_START:
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
- if (! sci->WndProc(SCI_ISRANGEWORD, startByte, endByte)) {
+ startByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
+ if (! sci->WndProc(Message::IsRangeWord, startByte, endByte)) {
// if the cursor was not on a word, forward back
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 1);
}
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 0);
break;
case ATK_TEXT_BOUNDARY_WORD_END:
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
- if (! sci->WndProc(SCI_ISRANGEWORD, startByte, endByte)) {
+ startByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
+ if (! sci->WndProc(Message::IsRangeWord, startByte, endByte)) {
// if the cursor was not on a word, forward back
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 1);
}
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 0);
break;
case ATK_TEXT_BOUNDARY_LINE_START: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
- endByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 1, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line, 0);
+ endByte = sci->WndProc(Message::PositionFromLine, line + 1, 0);
break;
}
case ATK_TEXT_BOUNDARY_LINE_END: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
if (line > 0) {
- startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 1, 0);
+ startByte = sci->WndProc(Message::GetLineEndPosition, line - 1, 0);
} else {
startByte = 0;
}
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line, 0);
break;
}
@@ -391,16 +399,16 @@
switch (granularity) {
case ATK_TEXT_GRANULARITY_CHAR:
startByte = byteOffset;
- endByte = sci->WndProc(SCI_POSITIONAFTER, byteOffset, 0);
+ endByte = sci->WndProc(Message::PositionAfter, byteOffset, 0);
break;
case ATK_TEXT_GRANULARITY_WORD:
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
break;
case ATK_TEXT_GRANULARITY_LINE: {
- gint line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+ gint line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line, 0);
break;
}
default:
@@ -430,11 +438,11 @@
}
gint ScintillaGTKAccessible::GetCaretOffset() {
- return CharacterOffsetFromByteOffset(sci->WndProc(SCI_GETCURRENTPOS, 0, 0));
+ return CharacterOffsetFromByteOffset(sci->WndProc(Message::GetCurrentPos, 0, 0));
}
gboolean ScintillaGTKAccessible::SetCaretOffset(int charOffset) {
- sci->WndProc(SCI_GOTOPOS, ByteOffsetFromCharacterOffset(charOffset), 0);
+ sci->WndProc(Message::GotoPos, ByteOffsetFromCharacterOffset(charOffset), 0);
return TRUE;
}
@@ -458,7 +466,7 @@
}
// FIXME: should we handle scrolling?
- return CharacterOffsetFromByteOffset(sci->WndProc(SCI_CHARPOSITIONFROMPOINTCLOSE, x, y));
+ return CharacterOffsetFromByteOffset(sci->WndProc(Message::CharPositionFromPointClose, x, y));
}
void ScintillaGTKAccessible::GetCharacterExtents(int charOffset,
@@ -468,14 +476,14 @@
Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
// FIXME: should we handle scrolling?
- *x = sci->WndProc(SCI_POINTXFROMPOSITION, 0, byteOffset);
- *y = sci->WndProc(SCI_POINTYFROMPOSITION, 0, byteOffset);
+ *x = sci->WndProc(Message::PointXFromPosition, 0, byteOffset);
+ *y = sci->WndProc(Message::PointYFromPosition, 0, byteOffset);
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- *height = sci->WndProc(SCI_TEXTHEIGHT, line, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ *height = sci->WndProc(Message::TextHeight, line, 0);
int nextByteOffset = PositionAfter(byteOffset);
- int next_x = sci->WndProc(SCI_POINTXFROMPOSITION, 0, nextByteOffset);
+ int next_x = sci->WndProc(Message::PointXFromPosition, 0, nextByteOffset);
if (next_x > *x) {
*width = next_x - *x;
} else if (nextByteOffset > byteOffset) {
@@ -521,7 +529,7 @@
return AddTextAttribute(attributes, attr, g_strdup(atk_text_attribute_get_value(attr, i)));
}
-static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, const ColourDesired &colour) {
+static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, ColourRGBA colour) {
return AddTextAttribute(attributes, attr,
g_strdup_printf("%u,%u,%u", colour.GetRed() * 257, colour.GetGreen() * 257, colour.GetBlue() * 257));
}
@@ -535,7 +543,7 @@
attr_set = AddTextAttribute(attr_set, ATK_TEXT_ATTR_FAMILY_NAME, g_strdup(style.fontName));
attr_set = AddTextAttribute(attr_set, ATK_TEXT_ATTR_SIZE, g_strdup_printf("%d", style.size / SC_FONT_SIZE_MULTIPLIER));
- attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_WEIGHT, CLAMP(style.weight, 100, 1000));
+ attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_WEIGHT, CLAMP(static_cast<int>(style.weight), 100, 1000));
attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_STYLE, style.italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL);
attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_UNDERLINE, style.underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE);
attr_set = AddTextColorAttribute(attr_set, ATK_TEXT_ATTR_FG_COLOR, style.fore);
@@ -551,7 +559,7 @@
Sci::Position byteOffset;
if (charOffset == -1) {
- byteOffset = sci->WndProc(SCI_GETCURRENTPOS, 0, 0);
+ byteOffset = sci->WndProc(Message::GetCurrentPos, 0, 0);
} else {
byteOffset = ByteOffsetFromCharacterOffset(charOffset);
}
@@ -598,9 +606,9 @@
ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
// use WndProc() to set the selections so it notifies as needed
if (n_selections > 1 || ! sci->sel.Empty()) {
- sci->WndProc(SCI_ADDSELECTION, startByte, endByte);
+ sci->WndProc(Message::AddSelection, startByte, endByte);
} else {
- sci->WndProc(SCI_SETSELECTION, startByte, endByte);
+ sci->WndProc(Message::SetSelection, startByte, endByte);
}
return TRUE;
@@ -612,11 +620,11 @@
return FALSE;
if (n_selections > 1) {
- sci->WndProc(SCI_DROPSELECTIONN, selection_num, 0);
+ sci->WndProc(Message::DropSelectionN, selection_num, 0);
} else if (sci->sel.Empty()) {
return FALSE;
} else {
- sci->WndProc(SCI_CLEARSELECTIONS, 0, 0);
+ sci->WndProc(Message::ClearSelections, 0, 0);
}
return TRUE;
@@ -629,8 +637,8 @@
Sci::Position startByte, endByte;
ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
- sci->WndProc(SCI_SETSELECTIONNSTART, selection_num, startByte);
- sci->WndProc(SCI_SETSELECTIONNEND, selection_num, endByte);
+ sci->WndProc(Message::SetSelectionNStart, selection_num, startByte);
+ sci->WndProc(Message::SetSelectionNEnd, selection_num, endByte);
return TRUE;
}
@@ -663,7 +671,7 @@
void ScintillaGTKAccessible::SetTextContents(const gchar *contents) {
// FIXME: it's probably useless to check for READONLY here, SETTEXT probably does it just fine?
if (! sci->pdoc->IsReadOnly()) {
- sci->WndProc(SCI_SETTEXT, 0, (sptr_t) contents);
+ sci->WndProc(Message::SetText, 0, (sptr_t) contents);
}
}
@@ -794,7 +802,7 @@
// Callbacks
void ScintillaGTKAccessible::UpdateCursor() {
- Sci::Position pos = sci->WndProc(SCI_GETCURRENTPOS, 0, 0);
+ Sci::Position pos = sci->WndProc(Message::GetCurrentPos, 0, 0);
if (old_pos != pos) {
int charPosition = CharacterOffsetFromByteOffset(pos);
g_signal_emit_by_name(accessible, "text-caret-moved", charPosition);
@@ -864,39 +872,41 @@
void ScintillaGTKAccessible::SetAccessibility(bool enabled) {
// Called by ScintillaGTK when application has enabled or disabled accessibility
if (enabled)
- sci->pdoc->AllocateLineCharacterIndex(SC_LINECHARACTERINDEX_UTF32);
+ sci->pdoc->AllocateLineCharacterIndex(LineCharacterIndexType::Utf32);
else
- sci->pdoc->ReleaseLineCharacterIndex(SC_LINECHARACTERINDEX_UTF32);
+ sci->pdoc->ReleaseLineCharacterIndex(LineCharacterIndexType::Utf32);
}
-void ScintillaGTKAccessible::Notify(GtkWidget *, gint, SCNotification *nt) {
+void ScintillaGTKAccessible::Notify(GtkWidget *, gint, NotificationData *nt) {
if (!Enabled())
return;
switch (nt->nmhdr.code) {
- case SCN_MODIFIED: {
- if (nt->modificationType & SC_MOD_INSERTTEXT) {
+ case Notification::Modified: {
+ if (FlagSet(nt->modificationType, ModificationFlags::InsertText)) {
int startChar = CharacterOffsetFromByteOffset(nt->position);
int lengthChar = sci->pdoc->CountCharacters(nt->position, nt->position + nt->length);
g_signal_emit_by_name(accessible, "text-changed::insert", startChar, lengthChar);
UpdateCursor();
}
- if (nt->modificationType & SC_MOD_BEFOREDELETE) {
+ if (FlagSet(nt->modificationType, ModificationFlags::BeforeDelete)) {
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) {
+ if (FlagSet(nt->modificationType, ModificationFlags::DeleteText)) {
UpdateCursor();
}
- if (nt->modificationType & SC_MOD_CHANGESTYLE) {
+ if (FlagSet(nt->modificationType, ModificationFlags::ChangeStyle)) {
g_signal_emit_by_name(accessible, "text-attributes-changed");
}
} break;
- case SCN_UPDATEUI: {
- if (nt->updated & SC_UPDATE_SELECTION) {
+ case Notification::UpdateUI: {
+ if (FlagSet(nt->updated, Update::Selection)) {
UpdateCursor();
}
} break;
+ default:
+ break;
}
}
@@ -1005,7 +1015,7 @@
// @p parent_type is only required on GTK 3.2 to 3.6, and only on the first call
static GType scintilla_object_accessible_get_type(GType parent_type G_GNUC_UNUSED) {
- static volatile gsize type_id_result = 0;
+ static gsize type_id_result = 0;
if (g_once_init_enter(&type_id_result)) {
GTypeInfo tinfo = {
@@ -1096,7 +1106,7 @@
#if HAVE_GTK_A11Y_H // just instantiate the accessible
*cache = scintilla_object_accessible_new(0, G_OBJECT(widget));
#elif HAVE_GTK_FACTORY // register in the factory and let GTK instantiate
- static volatile gsize registered = 0;
+ static gsize registered = 0;
if (g_once_init_enter(®istered)) {
// Figure out whether accessibility is enabled by looking at the type of the accessible
@@ -1142,7 +1152,7 @@
if (widget == nullptr) {
atk_state_set_add_state(state_set, ATK_STATE_DEFUNCT);
} else {
- if (! scintilla_send_message(SCINTILLA_OBJECT(widget), SCI_GETREADONLY, 0, 0))
+ if (! scintilla_send_message(SCINTILLA_OBJECT(widget), static_cast<int>(Message::GetReadOnly), 0, 0))
atk_state_set_add_state(state_set, ATK_STATE_EDITABLE);
#if ATK_CHECK_VERSION(2, 16, 0)
elsethank you for the leads. |
|
I don't know if this is important in understanding the problem but compiling with the parameter |
|
I'm sorry to ask this, but do you mind trying to compile all of the intermediate releases between 4.4.5 and 5.1.0 in order to try and reduce the diff? I think there's 5.0.0, 5.0.1, 5.0.2, and 5.0.3. 5.0.3 to 5.1.0 had the largest number of changes I think.
|
|
compilation change between 5.0.1 and 5.0.2 :
--- scintilla501/gtk/ScintillaGTKAccessible.cxx 2021-04-09 07:15:53.000000000 +0200
+++ scintilla502/gtk/ScintillaGTKAccessible.cxx 2021-05-25 13:29:38.000000000 +0200
@@ -89,15 +89,19 @@
#endif
// ScintillaGTK.h and stuff it needs
+#include "ScintillaTypes.h"
+#include "ScintillaMessages.h"
+#include "ScintillaStructures.h"
+#include "ILoader.h"
+#include "ILexer.h"
+
#include "Debugging.h"
#include "Geometry.h"
#include "Platform.h"
-#include "ILoader.h"
-#include "ILexer.h"
#include "Scintilla.h"
#include "ScintillaWidget.h"
-#include "CharacterCategory.h"
+#include "CharacterCategoryMap.h"
#include "Position.h"
#include "UniqueString.h"
#include "SplitVector.h"
@@ -130,6 +134,7 @@
#include "ScintillaGTKAccessible.h"
using namespace Scintilla;
+using namespace Scintilla::Internal;
struct ScintillaObjectAccessiblePrivate {
ScintillaGTKAccessible *pscin;
@@ -223,30 +228,30 @@
break;
case ATK_TEXT_BOUNDARY_WORD_START:
- startByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
- startByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 0);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+ startByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
+ startByte = sci->WndProc(Message::WordEndPosition, startByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, startByte, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 0);
break;
case ATK_TEXT_BOUNDARY_WORD_END:
- startByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, startByte, 0);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 1);
+ startByte = sci->WndProc(Message::WordEndPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::WordEndPosition, startByte, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, startByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 1);
break;
case ATK_TEXT_BOUNDARY_LINE_START: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 1, 0);
- endByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 2, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line + 1, 0);
+ endByte = sci->WndProc(Message::PositionFromLine, line + 2, 0);
break;
}
case ATK_TEXT_BOUNDARY_LINE_END: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line + 1, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::GetLineEndPosition, line, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line + 1, 0);
break;
}
@@ -273,24 +278,24 @@
break;
case ATK_TEXT_BOUNDARY_WORD_START:
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 0);
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 1);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 0);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 1);
+ endByte = sci->WndProc(Message::WordStartPosition, byteOffset, 0);
+ endByte = sci->WndProc(Message::WordStartPosition, endByte, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, endByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 1);
break;
case ATK_TEXT_BOUNDARY_WORD_END:
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 0);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, endByte, 1);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+ endByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordStartPosition, endByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, endByte, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 0);
break;
case ATK_TEXT_BOUNDARY_LINE_START: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- endByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ endByte = sci->WndProc(Message::PositionFromLine, line, 0);
if (line > 0) {
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line - 1, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line - 1, 0);
} else {
startByte = endByte;
}
@@ -298,14 +303,14 @@
}
case ATK_TEXT_BOUNDARY_LINE_END: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
if (line > 0) {
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 1, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line - 1, 0);
} else {
endByte = 0;
}
if (line > 1) {
- startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 2, 0);
+ startByte = sci->WndProc(Message::GetLineEndPosition, line - 2, 0);
} else {
startByte = endByte;
}
@@ -331,46 +336,46 @@
switch (boundaryType) {
case ATK_TEXT_BOUNDARY_CHAR:
startByte = byteOffset;
- endByte = sci->WndProc(SCI_POSITIONAFTER, byteOffset, 0);
+ endByte = sci->WndProc(Message::PositionAfter, byteOffset, 0);
break;
case ATK_TEXT_BOUNDARY_WORD_START:
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
- if (! sci->WndProc(SCI_ISRANGEWORD, startByte, endByte)) {
+ startByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
+ if (! sci->WndProc(Message::IsRangeWord, startByte, endByte)) {
// if the cursor was not on a word, forward back
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 1);
}
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 0);
break;
case ATK_TEXT_BOUNDARY_WORD_END:
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
- if (! sci->WndProc(SCI_ISRANGEWORD, startByte, endByte)) {
+ startByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
+ if (! sci->WndProc(Message::IsRangeWord, startByte, endByte)) {
// if the cursor was not on a word, forward back
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 0);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, endByte, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 0);
+ endByte = sci->WndProc(Message::WordEndPosition, endByte, 1);
}
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, startByte, 0);
+ startByte = sci->WndProc(Message::WordStartPosition, startByte, 0);
break;
case ATK_TEXT_BOUNDARY_LINE_START: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
- endByte = sci->WndProc(SCI_POSITIONFROMLINE, line + 1, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line, 0);
+ endByte = sci->WndProc(Message::PositionFromLine, line + 1, 0);
break;
}
case ATK_TEXT_BOUNDARY_LINE_END: {
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
if (line > 0) {
- startByte = sci->WndProc(SCI_GETLINEENDPOSITION, line - 1, 0);
+ startByte = sci->WndProc(Message::GetLineEndPosition, line - 1, 0);
} else {
startByte = 0;
}
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line, 0);
break;
}
@@ -394,16 +399,16 @@
switch (granularity) {
case ATK_TEXT_GRANULARITY_CHAR:
startByte = byteOffset;
- endByte = sci->WndProc(SCI_POSITIONAFTER, byteOffset, 0);
+ endByte = sci->WndProc(Message::PositionAfter, byteOffset, 0);
break;
case ATK_TEXT_GRANULARITY_WORD:
- startByte = sci->WndProc(SCI_WORDSTARTPOSITION, byteOffset, 1);
- endByte = sci->WndProc(SCI_WORDENDPOSITION, byteOffset, 1);
+ startByte = sci->WndProc(Message::WordStartPosition, byteOffset, 1);
+ endByte = sci->WndProc(Message::WordEndPosition, byteOffset, 1);
break;
case ATK_TEXT_GRANULARITY_LINE: {
- gint line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- startByte = sci->WndProc(SCI_POSITIONFROMLINE, line, 0);
- endByte = sci->WndProc(SCI_GETLINEENDPOSITION, line, 0);
+ gint line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ startByte = sci->WndProc(Message::PositionFromLine, line, 0);
+ endByte = sci->WndProc(Message::GetLineEndPosition, line, 0);
break;
}
default:
@@ -433,11 +438,11 @@
}
gint ScintillaGTKAccessible::GetCaretOffset() {
- return CharacterOffsetFromByteOffset(sci->WndProc(SCI_GETCURRENTPOS, 0, 0));
+ return CharacterOffsetFromByteOffset(sci->WndProc(Message::GetCurrentPos, 0, 0));
}
gboolean ScintillaGTKAccessible::SetCaretOffset(int charOffset) {
- sci->WndProc(SCI_GOTOPOS, ByteOffsetFromCharacterOffset(charOffset), 0);
+ sci->WndProc(Message::GotoPos, ByteOffsetFromCharacterOffset(charOffset), 0);
return TRUE;
}
@@ -461,7 +466,7 @@
}
// FIXME: should we handle scrolling?
- return CharacterOffsetFromByteOffset(sci->WndProc(SCI_CHARPOSITIONFROMPOINTCLOSE, x, y));
+ return CharacterOffsetFromByteOffset(sci->WndProc(Message::CharPositionFromPointClose, x, y));
}
void ScintillaGTKAccessible::GetCharacterExtents(int charOffset,
@@ -471,14 +476,14 @@
Sci::Position byteOffset = ByteOffsetFromCharacterOffset(charOffset);
// FIXME: should we handle scrolling?
- *x = sci->WndProc(SCI_POINTXFROMPOSITION, 0, byteOffset);
- *y = sci->WndProc(SCI_POINTYFROMPOSITION, 0, byteOffset);
+ *x = sci->WndProc(Message::PointXFromPosition, 0, byteOffset);
+ *y = sci->WndProc(Message::PointYFromPosition, 0, byteOffset);
- int line = sci->WndProc(SCI_LINEFROMPOSITION, byteOffset, 0);
- *height = sci->WndProc(SCI_TEXTHEIGHT, line, 0);
+ int line = sci->WndProc(Message::LineFromPosition, byteOffset, 0);
+ *height = sci->WndProc(Message::TextHeight, line, 0);
int nextByteOffset = PositionAfter(byteOffset);
- int next_x = sci->WndProc(SCI_POINTXFROMPOSITION, 0, nextByteOffset);
+ int next_x = sci->WndProc(Message::PointXFromPosition, 0, nextByteOffset);
if (next_x > *x) {
*width = next_x - *x;
} else if (nextByteOffset > byteOffset) {
@@ -524,7 +529,7 @@
return AddTextAttribute(attributes, attr, g_strdup(atk_text_attribute_get_value(attr, i)));
}
-static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, const ColourDesired &colour) {
+static AtkAttributeSet *AddTextColorAttribute(AtkAttributeSet *attributes, AtkTextAttribute attr, ColourRGBA colour) {
return AddTextAttribute(attributes, attr,
g_strdup_printf("%u,%u,%u", colour.GetRed() * 257, colour.GetGreen() * 257, colour.GetBlue() * 257));
}
@@ -538,7 +543,7 @@
attr_set = AddTextAttribute(attr_set, ATK_TEXT_ATTR_FAMILY_NAME, g_strdup(style.fontName));
attr_set = AddTextAttribute(attr_set, ATK_TEXT_ATTR_SIZE, g_strdup_printf("%d", style.size / SC_FONT_SIZE_MULTIPLIER));
- attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_WEIGHT, CLAMP(style.weight, 100, 1000));
+ attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_WEIGHT, CLAMP(static_cast<int>(style.weight), 100, 1000));
attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_STYLE, style.italic ? PANGO_STYLE_ITALIC : PANGO_STYLE_NORMAL);
attr_set = AddTextIntAttribute(attr_set, ATK_TEXT_ATTR_UNDERLINE, style.underline ? PANGO_UNDERLINE_SINGLE : PANGO_UNDERLINE_NONE);
attr_set = AddTextColorAttribute(attr_set, ATK_TEXT_ATTR_FG_COLOR, style.fore);
@@ -554,7 +559,7 @@
Sci::Position byteOffset;
if (charOffset == -1) {
- byteOffset = sci->WndProc(SCI_GETCURRENTPOS, 0, 0);
+ byteOffset = sci->WndProc(Message::GetCurrentPos, 0, 0);
} else {
byteOffset = ByteOffsetFromCharacterOffset(charOffset);
}
@@ -601,9 +606,9 @@
ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
// use WndProc() to set the selections so it notifies as needed
if (n_selections > 1 || ! sci->sel.Empty()) {
- sci->WndProc(SCI_ADDSELECTION, startByte, endByte);
+ sci->WndProc(Message::AddSelection, startByte, endByte);
} else {
- sci->WndProc(SCI_SETSELECTION, startByte, endByte);
+ sci->WndProc(Message::SetSelection, startByte, endByte);
}
return TRUE;
@@ -615,11 +620,11 @@
return FALSE;
if (n_selections > 1) {
- sci->WndProc(SCI_DROPSELECTIONN, selection_num, 0);
+ sci->WndProc(Message::DropSelectionN, selection_num, 0);
} else if (sci->sel.Empty()) {
return FALSE;
} else {
- sci->WndProc(SCI_CLEARSELECTIONS, 0, 0);
+ sci->WndProc(Message::ClearSelections, 0, 0);
}
return TRUE;
@@ -632,8 +637,8 @@
Sci::Position startByte, endByte;
ByteRangeFromCharacterRange(startChar, endChar, startByte, endByte);
- sci->WndProc(SCI_SETSELECTIONNSTART, selection_num, startByte);
- sci->WndProc(SCI_SETSELECTIONNEND, selection_num, endByte);
+ sci->WndProc(Message::SetSelectionNStart, selection_num, startByte);
+ sci->WndProc(Message::SetSelectionNEnd, selection_num, endByte);
return TRUE;
}
@@ -666,7 +671,7 @@
void ScintillaGTKAccessible::SetTextContents(const gchar *contents) {
// FIXME: it's probably useless to check for READONLY here, SETTEXT probably does it just fine?
if (! sci->pdoc->IsReadOnly()) {
- sci->WndProc(SCI_SETTEXT, 0, (sptr_t) contents);
+ sci->WndProc(Message::SetText, 0, (sptr_t) contents);
}
}
@@ -797,7 +802,7 @@
// Callbacks
void ScintillaGTKAccessible::UpdateCursor() {
- Sci::Position pos = sci->WndProc(SCI_GETCURRENTPOS, 0, 0);
+ Sci::Position pos = sci->WndProc(Message::GetCurrentPos, 0, 0);
if (old_pos != pos) {
int charPosition = CharacterOffsetFromByteOffset(pos);
g_signal_emit_by_name(accessible, "text-caret-moved", charPosition);
@@ -867,39 +872,41 @@
void ScintillaGTKAccessible::SetAccessibility(bool enabled) {
// Called by ScintillaGTK when application has enabled or disabled accessibility
if (enabled)
- sci->pdoc->AllocateLineCharacterIndex(SC_LINECHARACTERINDEX_UTF32);
+ sci->pdoc->AllocateLineCharacterIndex(LineCharacterIndexType::Utf32);
else
- sci->pdoc->ReleaseLineCharacterIndex(SC_LINECHARACTERINDEX_UTF32);
+ sci->pdoc->ReleaseLineCharacterIndex(LineCharacterIndexType::Utf32);
}
-void ScintillaGTKAccessible::Notify(GtkWidget *, gint, SCNotification *nt) {
+void ScintillaGTKAccessible::Notify(GtkWidget *, gint, NotificationData *nt) {
if (!Enabled())
return;
switch (nt->nmhdr.code) {
- case SCN_MODIFIED: {
- if (nt->modificationType & SC_MOD_INSERTTEXT) {
+ case Notification::Modified: {
+ if (FlagSet(nt->modificationType, ModificationFlags::InsertText)) {
int startChar = CharacterOffsetFromByteOffset(nt->position);
int lengthChar = sci->pdoc->CountCharacters(nt->position, nt->position + nt->length);
g_signal_emit_by_name(accessible, "text-changed::insert", startChar, lengthChar);
UpdateCursor();
}
- if (nt->modificationType & SC_MOD_BEFOREDELETE) {
+ if (FlagSet(nt->modificationType, ModificationFlags::BeforeDelete)) {
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) {
+ if (FlagSet(nt->modificationType, ModificationFlags::DeleteText)) {
UpdateCursor();
}
- if (nt->modificationType & SC_MOD_CHANGESTYLE) {
+ if (FlagSet(nt->modificationType, ModificationFlags::ChangeStyle)) {
g_signal_emit_by_name(accessible, "text-attributes-changed");
}
} break;
- case SCN_UPDATEUI: {
- if (nt->updated & SC_UPDATE_SELECTION) {
+ case Notification::UpdateUI: {
+ if (FlagSet(nt->updated, Update::Selection)) {
UpdateCursor();
}
} break;
+ default:
+ break;
}
}
@@ -1008,7 +1015,7 @@
// @p parent_type is only required on GTK 3.2 to 3.6, and only on the first call
static GType scintilla_object_accessible_get_type(GType parent_type G_GNUC_UNUSED) {
- static volatile gsize type_id_result = 0;
+ static gsize type_id_result = 0;
if (g_once_init_enter(&type_id_result)) {
GTypeInfo tinfo = {
@@ -1099,7 +1106,7 @@
#if HAVE_GTK_A11Y_H // just instantiate the accessible
*cache = scintilla_object_accessible_new(0, G_OBJECT(widget));
#elif HAVE_GTK_FACTORY // register in the factory and let GTK instantiate
- static volatile gsize registered = 0;
+ static gsize registered = 0;
if (g_once_init_enter(®istered)) {
// Figure out whether accessibility is enabled by looking at the type of the accessible
@@ -1145,7 +1152,7 @@
if (widget == nullptr) {
atk_state_set_add_state(state_set, ATK_STATE_DEFUNCT);
} else {
- if (! scintilla_send_message(SCINTILLA_OBJECT(widget), SCI_GETREADONLY, 0, 0))
+ if (! scintilla_send_message(SCINTILLA_OBJECT(widget), static_cast<int>(Message::GetReadOnly), 0, 0))
atk_state_set_add_state(state_set, ATK_STATE_EDITABLE);
#if ATK_CHECK_VERSION(2, 16, 0)
else |
|
Okay, I just realized that I think the fix should be easy. I'm sorry that I didn't see it before from the error messages, but I noticed it when looking at the diff.
In ScintillaGTKAccessible.cxx on lines 1008 and 1099, remove the `volatile` qualifier from the variable definitions. Then try to recompile.
|
|
perfect ! |
Obtained from: orbitalquark/textadept#110 PR: 256200
hi,
I can't compile latest 11.1 on archlinux and get this error :
The text was updated successfully, but these errors were encountered: