diff options
author | Neil <nyamatongwe@gmail.com> | 2016-05-17 21:58:45 +1000 |
---|---|---|
committer | Neil <nyamatongwe@gmail.com> | 2016-05-17 21:58:45 +1000 |
commit | 9075832b2e345bb3ffe5d9b53ce3b899dc3a1efa (patch) | |
tree | eea84fe9abb40c8fbacd4e722b2e8fb458288465 /gtk | |
parent | f39e2e75170e9b1953eb7eb6ed48326e6af0c24e (diff) | |
download | scintilla-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.cxx | 20 | ||||
-rw-r--r-- | gtk/deps.mak | 2 | ||||
-rw-r--r-- | gtk/makefile | 3 | ||||
-rw-r--r-- | gtk/scintilla-marshal.c | 86 | ||||
-rw-r--r-- | gtk/scintilla-marshal.h | 21 | ||||
-rw-r--r-- | gtk/scintilla-marshal.list | 1 |
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 |