Skip to content
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

Closed
patatetom opened this issue Jun 22, 2021 · 10 comments
Closed

error while compiling under archlinux #110

patatetom opened this issue Jun 22, 2021 · 10 comments

Comments

@patatetom
Copy link

patatetom commented Jun 22, 2021

hi,
I can't compile latest 11.1 on archlinux and get this error :

scintilla/gtk/ScintillaGTK.cxx:2301:48: warning: enumeration value 'PANGO_UNDERLINE_ERROR_LINE' not handled in switch [-Wswitch]
g++ -c -Os -std=c++17 -pedantic -DGTK -DSCI_LEXER -DSCI_EMPTYCATALOGUE -DNDEBUG -Iscintilla/include -Iscintilla/src -Iscintilla/lexlib -Wall -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libmount -I/usr/include/blkid -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/lzo -I/usr/include/pixman-1 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/atk-1.0 -pthread  scintilla/gtk/ScintillaGTKAccessible.cxx -o ScintillaGTKAccessible.o
scintilla/gtk/ScintillaGTKAccessible.cxx:153:20: warning: Deprecated pre-processor symbol, replace with 
  153 |         return SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible)->pscin;
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx:1165:20: warning: Deprecated pre-processor symbol, replace with 
 1165 |         ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx:1194:20: warning: Deprecated pre-processor symbol, replace with 
 1194 |         ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(object);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx:1225:20: warning: Deprecated pre-processor symbol, replace with 
 1225 |         ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtkobject.h:37,
                 from /usr/include/gtk-2.0/gtk/gtkwidget.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkcontainer.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkbin.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkwindow.h:36,
                 from /usr/include/gtk-2.0/gtk/gtkdialog.h:35,
                 from /usr/include/gtk-2.0/gtk/gtkaboutdialog.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:33,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:69:
/usr/include/gtk-2.0/gtk/gtktypeutils.h:236:64: warning: 'GTypeDebugFlags' is deprecated [-Wdeprecated-declarations]
  236 | void            gtk_type_init   (GTypeDebugFlags    debug_flags);
      |                                                                ^
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:69:
/usr/include/glib-2.0/gobject/gtype.h:685:3: note: declared here
  685 | } GTypeDebugFlags GLIB_DEPRECATED_TYPE_IN_2_36;
      |   ^~~~~~~~~~~~~~~
In file included from /usr/include/gtk-2.0/gtk/gtktoolitem.h:31,
                 from /usr/include/gtk-2.0/gtk/gtktoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtkmenutoolbutton.h:30,
                 from /usr/include/gtk-2.0/gtk/gtk.h:126,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:69:
/usr/include/gtk-2.0/gtk/gtktooltips.h:73:12: warning: 'GTimeVal' is deprecated: Use 'GDateTime' instead [-Wdeprecated-declarations]
   73 |   GTimeVal last_popdown;
      |            ^~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/galloca.h:32,
                 from /usr/include/glib-2.0/glib.h:30,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:68:
/usr/include/glib-2.0/glib/gtypes.h:545:26: note: declared here
  545 | typedef struct _GTimeVal GTimeVal GLIB_DEPRECATED_TYPE_IN_2_62_FOR(GDateTime);
      |                          ^~~~~~~~
In file included from /usr/include/glib-2.0/glib/gthread.h:32,
                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
                 from /usr/include/glib-2.0/glib.h:32,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:68:
scintilla/gtk/ScintillaGTKAccessible.cxx: In function 'GType scintilla_object_accessible_get_type(GType)':
/usr/include/glib-2.0/glib/gatomic.h:117:19: error: argument 2 of '__atomic_load' must not be a pointer to a 'volatile' type
  117 |     __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/glib/gthread.h:260:7: note: in expansion of macro 'g_atomic_pointer_get'
  260 |     (!g_atomic_pointer_get (location) &&                             \
      |       ^~~~~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx:1010:13: note: in expansion of macro 'g_once_init_enter'
 1010 |         if (g_once_init_enter(&type_id_result)) {
      |             ^~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx: In static member function 'static AtkObject* Scintilla::ScintillaGTKAccessible::WidgetGetAccessibleImpl(GtkWidget*, AtkObject**, gpointer)':
/usr/include/glib-2.0/glib/gatomic.h:117:19: error: argument 2 of '__atomic_load' must not be a pointer to a 'volatile' type
  117 |     __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/glib/gthread.h:260:7: note: in expansion of macro 'g_atomic_pointer_get'
  260 |     (!g_atomic_pointer_get (location) &&                             \
      |       ^~~~~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx:1101:13: note: in expansion of macro 'g_once_init_enter'
 1101 |         if (g_once_init_enter(&registered)) {
      |             ^~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx: In function 'void scintilla_object_accessible_class_init(ScintillaObjectAccessibleClass*)':
scintilla/gtk/ScintillaGTKAccessible.cxx:1221:33: warning: 'void g_type_class_add_private(gpointer, gsize)' is deprecated [-Wdeprecated-declarations]
 1221 |         g_type_class_add_private(klass, sizeof (ScintillaObjectAccessiblePrivate));
      |         ~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/gobject/gobject.h:24,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:22,
                 from /usr/include/glib-2.0/gio/gioenums.h:28,
                 from /usr/include/glib-2.0/gio/giotypes.h:28,
                 from /usr/include/glib-2.0/gio/gio.h:26,
                 from /usr/include/gtk-2.0/gdk/gdkapplaunchcontext.h:30,
                 from /usr/include/gtk-2.0/gdk/gdk.h:32,
                 from /usr/include/gtk-2.0/gtk/gtk.h:32,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:69:
/usr/include/glib-2.0/gobject/gtype.h:1307:10: note: declared here
 1307 | void     g_type_class_add_private       (gpointer                    g_class,
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
make: *** [Makefile:182: ScintillaGTKAccessible.o] Error 1
==> ERROR: A failure occurred in build().
    Aborting...

2021 06 22-09 09 26

@orbitalquark
Copy link
Owner

orbitalquark commented Jun 22, 2021 via email

@patatetom
Copy link
Author

I thought it was an error but the compilation of Scintilla (5.10) actually finishes correctly despite many warnings.
make && echo OK returns OK.

@patatetom
Copy link
Author

the Scintilla version download/used by TA (11.1) is 4.45 which does not compile (or not anymore).

@patatetom patatetom reopened this Jun 25, 2021
@orbitalquark
Copy link
Owner

orbitalquark commented Jun 25, 2021 via email

@patatetom
Copy link
Author

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.
what I can add is that the compilation of 4.45 also fails on a freshly installed ArchLinux.
here are the changes :

# 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(&registered)) {
 		// 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)
 		else

thank you for the leads.

@patatetom
Copy link
Author

I don't know if this is important in understanding the problem but compiling with the parameter GTK3=1 does not give the same error but stays on ScintillaGTKAccessible.cxx :

scintilla/gtk/ScintillaGTKAccessible.cxx:1225:20: warning: Deprecated pre-processor symbol, replace with 
 1225 |         ScintillaObjectAccessiblePrivate *priv = SCINTILLA_OBJECT_ACCESSIBLE_GET_PRIVATE(accessible);
      |                    ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib/gthread.h:32,
                 from /usr/include/glib-2.0/glib/gasyncqueue.h:32,
                 from /usr/include/glib-2.0/glib.h:32,
                 from scintilla/gtk/ScintillaGTKAccessible.cxx:68:
scintilla/gtk/ScintillaGTKAccessible.cxx: In function 'GType scintilla_object_accessible_get_type(GType)':
/usr/include/glib-2.0/glib/gatomic.h:117:19: error: argument 2 of '__atomic_load' must not be a pointer to a 'volatile' type
  117 |     __atomic_load (gapg_temp_atomic, &gapg_temp_newval, __ATOMIC_SEQ_CST); \
      |     ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/glib-2.0/glib/gthread.h:260:7: note: in expansion of macro 'g_atomic_pointer_get'
  260 |     (!g_atomic_pointer_get (location) &&                             \
      |       ^~~~~~~~~~~~~~~~~~~~
scintilla/gtk/ScintillaGTKAccessible.cxx:1010:13: note: in expansion of macro 'g_once_init_enter'
 1010 |         if (g_once_init_enter(&type_id_result)) {
      |             ^~~~~~~~~~~~~~~~~
make: *** [Makefile:182: ScintillaGTKAccessible.o] Error 1

@orbitalquark
Copy link
Owner

orbitalquark commented Jun 25, 2021 via email

@patatetom
Copy link
Author

compilation change between 5.0.1 and 5.0.2 :

Version Compilation
4.4.5 KO
4.4.6 KO
5.0.0 KO
5.0.1 KO
5.0.2 ok
5.0.3 ok
5.1.0 ok
--- 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(&registered)) {
 		// 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

@orbitalquark
Copy link
Owner

orbitalquark commented Jun 25, 2021 via email

@patatetom
Copy link
Author

perfect !
TextAdept 11.1 is now compiling without any problem with Scintilla 4.4.5 under (my) Archlinux :-)
thanks a lot, lacsaP.

freebsd-git pushed a commit to freebsd/freebsd-ports that referenced this issue Jul 24, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants