aboutsummaryrefslogtreecommitdiffhomepage
path: root/gtk
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2016-05-17 21:58:45 +1000
committerNeil <nyamatongwe@gmail.com>2016-05-17 21:58:45 +1000
commit9075832b2e345bb3ffe5d9b53ce3b899dc3a1efa (patch)
treeeea84fe9abb40c8fbacd4e722b2e8fb458288465 /gtk
parentf39e2e75170e9b1953eb7eb6ed48326e6af0c24e (diff)
downloadscintilla-mirror-9075832b2e345bb3ffe5d9b53ce3b899dc3a1efa.tar.gz
Backed out changeset: 89cda794d0dd as fixed changeset will be sent by author.
Diffstat (limited to 'gtk')
-rw-r--r--gtk/ScintillaGTK.cxx20
-rw-r--r--gtk/deps.mak2
-rw-r--r--gtk/makefile3
-rw-r--r--gtk/scintilla-marshal.c86
-rw-r--r--gtk/scintilla-marshal.h21
-rw-r--r--gtk/scintilla-marshal.list1
6 files changed, 120 insertions, 13 deletions
diff --git a/gtk/ScintillaGTK.cxx b/gtk/ScintillaGTK.cxx
index 3caab96a4..9fc8e4cc4 100644
--- a/gtk/ScintillaGTK.cxx
+++ b/gtk/ScintillaGTK.cxx
@@ -72,6 +72,8 @@
#include "ExternalLexer.h"
#endif
+#include "scintilla-marshal.h"
+
#include "Converter.h"
#if defined(__clang__)
@@ -3160,6 +3162,9 @@ void ScintillaGTK::ClassInit(OBJECT_CLASS* object_class, GtkWidgetClass *widget_
container_class->forall = MainForAll;
}
+#define SIG_MARSHAL scintilla_marshal_NONE__INT_POINTER
+#define MARSHAL_ARGUMENTS G_TYPE_INT, G_TYPE_POINTER
+
static void scintilla_class_init(ScintillaClass *klass) {
try {
OBJECT_CLASS *object_class = (OBJECT_CLASS*) klass;
@@ -3174,9 +3179,9 @@ static void scintilla_class_init(ScintillaClass *klass) {
G_STRUCT_OFFSET(ScintillaClass, command),
NULL, //(GSignalAccumulator)
NULL, //(gpointer)
- NULL,
+ SIG_MARSHAL,
G_TYPE_NONE,
- 2, G_TYPE_INT, GTK_TYPE_WIDGET);
+ 2, MARSHAL_ARGUMENTS);
scintilla_signals[NOTIFY_SIGNAL] = g_signal_new(
SCINTILLA_NOTIFY,
@@ -3185,9 +3190,9 @@ static void scintilla_class_init(ScintillaClass *klass) {
G_STRUCT_OFFSET(ScintillaClass, notify),
NULL,
NULL,
- NULL,
+ SIG_MARSHAL,
G_TYPE_NONE,
- 2, G_TYPE_INT, SCINTILLA_TYPE_NOTIFICATION);
+ 2, MARSHAL_ARGUMENTS);
klass->command = NULL;
klass->notify = NULL;
@@ -3228,10 +3233,3 @@ void scintilla_release_resources(void) {
} catch (...) {
}
}
-
-/* Define a dummy boxed type because g-ir-scanner is unable to
- * recognize gpointer-derived types. Note that SCNotificaiton
- * is always allocated on stack so copying is not appropriate. */
-static void *copy_(void *src) { return src; }
-static void free_(void *doc) { }
-G_DEFINE_BOXED_TYPE(SCNotification, scnotification, copy_, free_)
diff --git a/gtk/deps.mak b/gtk/deps.mak
index f59ef3282..5b826358a 100644
--- a/gtk/deps.mak
+++ b/gtk/deps.mak
@@ -15,7 +15,7 @@ ScintillaGTK.o: ScintillaGTK.cxx \
../src/Selection.h ../src/PositionCache.h ../src/EditModel.h \
../src/MarginView.h ../src/EditView.h ../src/Editor.h \
../src/AutoComplete.h ../src/ScintillaBase.h ../src/ExternalLexer.h \
- Converter.h
+ scintilla-marshal.h Converter.h
AutoComplete.o: ../src/AutoComplete.cxx ../include/Platform.h \
../include/Scintilla.h ../include/Sci_Position.h \
../lexlib/CharacterSet.h ../src/Position.h ../src/AutoComplete.h
diff --git a/gtk/makefile b/gtk/makefile
index a4d46d9a0..8fd92f6db 100644
--- a/gtk/makefile
+++ b/gtk/makefile
@@ -78,6 +78,7 @@ CFLAGS:=$(CTFLAGS)
CXXTFLAGS:=--std=gnu++0x $(CTFLAGS) $(REFLAGS)
CONFIGFLAGS:=$(shell pkg-config --cflags $(GTKVERSION))
+MARSHALLER=scintilla-marshal.o
.cxx.o:
$(CXX) $(CONFIGFLAGS) $(CXXTFLAGS) $(CXXFLAGS) -c $<
@@ -103,7 +104,7 @@ $(COMPLIB): Accessor.o CharacterSet.o LexerBase.o LexerModule.o LexerSimple.o St
PropSetSimple.o PlatGTK.o \
KeyMap.o LineMarker.o PositionCache.o ScintillaGTK.o CellBuffer.o CharacterCategory.o ViewStyle.o \
RESearch.o RunStyles.o Selection.o Style.o Indicator.o AutoComplete.o UniConversion.o XPM.o \
- $(LEXOBJS)
+ $(MARSHALLER) $(LEXOBJS)
$(AR) rc $@ $^
$(RANLIB) $@
diff --git a/gtk/scintilla-marshal.c b/gtk/scintilla-marshal.c
new file mode 100644
index 000000000..be57b7c2e
--- /dev/null
+++ b/gtk/scintilla-marshal.c
@@ -0,0 +1,86 @@
+
+#include <glib-object.h>
+
+
+#ifdef G_ENABLE_DEBUG
+#define g_marshal_value_peek_boolean(v) g_value_get_boolean (v)
+#define g_marshal_value_peek_char(v) g_value_get_char (v)
+#define g_marshal_value_peek_uchar(v) g_value_get_uchar (v)
+#define g_marshal_value_peek_int(v) g_value_get_int (v)
+#define g_marshal_value_peek_uint(v) g_value_get_uint (v)
+#define g_marshal_value_peek_long(v) g_value_get_long (v)
+#define g_marshal_value_peek_ulong(v) g_value_get_ulong (v)
+#define g_marshal_value_peek_int64(v) g_value_get_int64 (v)
+#define g_marshal_value_peek_uint64(v) g_value_get_uint64 (v)
+#define g_marshal_value_peek_enum(v) g_value_get_enum (v)
+#define g_marshal_value_peek_flags(v) g_value_get_flags (v)
+#define g_marshal_value_peek_float(v) g_value_get_float (v)
+#define g_marshal_value_peek_double(v) g_value_get_double (v)
+#define g_marshal_value_peek_string(v) (char*) g_value_get_string (v)
+#define g_marshal_value_peek_param(v) g_value_get_param (v)
+#define g_marshal_value_peek_boxed(v) g_value_get_boxed (v)
+#define g_marshal_value_peek_pointer(v) g_value_get_pointer (v)
+#define g_marshal_value_peek_object(v) g_value_get_object (v)
+#else /* !G_ENABLE_DEBUG */
+/* WARNING: This code accesses GValues directly, which is UNSUPPORTED API.
+ * Do not access GValues directly in your code. Instead, use the
+ * g_value_get_*() functions
+ */
+#define g_marshal_value_peek_boolean(v) (v)->data[0].v_int
+#define g_marshal_value_peek_char(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uchar(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_int(v) (v)->data[0].v_int
+#define g_marshal_value_peek_uint(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_long(v) (v)->data[0].v_long
+#define g_marshal_value_peek_ulong(v) (v)->data[0].v_ulong
+#define g_marshal_value_peek_int64(v) (v)->data[0].v_int64
+#define g_marshal_value_peek_uint64(v) (v)->data[0].v_uint64
+#define g_marshal_value_peek_enum(v) (v)->data[0].v_int
+#define g_marshal_value_peek_flags(v) (v)->data[0].v_uint
+#define g_marshal_value_peek_float(v) (v)->data[0].v_float
+#define g_marshal_value_peek_double(v) (v)->data[0].v_double
+#define g_marshal_value_peek_string(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_param(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_boxed(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_pointer(v) (v)->data[0].v_pointer
+#define g_marshal_value_peek_object(v) (v)->data[0].v_pointer
+#endif /* !G_ENABLE_DEBUG */
+
+
+/* NONE:INT,POINTER (scintilla-marshal.list:1) */
+void
+scintilla_marshal_VOID__INT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data)
+{
+ typedef void (*GMarshalFunc_VOID__INT_POINTER) (gpointer data1,
+ gint arg_1,
+ gpointer arg_2,
+ gpointer data2);
+ register GMarshalFunc_VOID__INT_POINTER callback;
+ register GCClosure *cc = (GCClosure*) closure;
+ register gpointer data1, data2;
+
+ g_return_if_fail (n_param_values == 3);
+
+ if (G_CCLOSURE_SWAP_DATA (closure))
+ {
+ data1 = closure->data;
+ data2 = g_value_peek_pointer (param_values + 0);
+ }
+ else
+ {
+ data1 = g_value_peek_pointer (param_values + 0);
+ data2 = closure->data;
+ }
+ callback = (GMarshalFunc_VOID__INT_POINTER) (marshal_data ? marshal_data : cc->callback);
+
+ callback (data1,
+ g_marshal_value_peek_int (param_values + 1),
+ g_marshal_value_peek_pointer (param_values + 2),
+ data2);
+}
+
diff --git a/gtk/scintilla-marshal.h b/gtk/scintilla-marshal.h
new file mode 100644
index 000000000..9116a56c9
--- /dev/null
+++ b/gtk/scintilla-marshal.h
@@ -0,0 +1,21 @@
+
+#ifndef __scintilla_marshal_MARSHAL_H__
+#define __scintilla_marshal_MARSHAL_H__
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* NONE:INT,POINTER (scintilla-marshal.list:1) */
+extern void scintilla_marshal_VOID__INT_POINTER (GClosure *closure,
+ GValue *return_value,
+ guint n_param_values,
+ const GValue *param_values,
+ gpointer invocation_hint,
+ gpointer marshal_data);
+#define scintilla_marshal_NONE__INT_POINTER scintilla_marshal_VOID__INT_POINTER
+
+G_END_DECLS
+
+#endif /* __scintilla_marshal_MARSHAL_H__ */
+
diff --git a/gtk/scintilla-marshal.list b/gtk/scintilla-marshal.list
new file mode 100644
index 000000000..e5750ecb6
--- /dev/null
+++ b/gtk/scintilla-marshal.list
@@ -0,0 +1 @@
+NONE:INT,POINTER