[geany/geany] 5ad631: Merge pull request #1038 from kugel-/gi-signals

Colomban Wendling git-noreply at xxxxx
Thu Jun 23 21:15:23 UTC 2016


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Thu, 23 Jun 2016 21:15:23 UTC
Commit:      5ad6316e7b4a39b9212d53c142c70ddb09fde323
             https://github.com/geany/geany/commit/5ad6316e7b4a39b9212d53c142c70ddb09fde323

Log Message:
-----------
Merge pull request #1038 from kugel-/gi-signals

Fix signals for GI


Modified Paths:
--------------
    configure.ac
    scintilla/gtk/ScintillaGTK.cxx
    scintilla/scintilla_changes.patch
    scripts/cross-build-mingw.sh
    src/document.c
    src/document.h
    src/editor.c
    src/editor.h
    src/filetypes.c
    src/filetypes.h
    src/geanyobject.c
    src/geanyobject.h
    src/plugindata.h
    src/plugins.c

Modified: configure.ac
9 lines changed, 3 insertions(+), 6 deletions(-)
===================================================================
@@ -74,14 +74,11 @@ AS_IF([test "x$enable_gtk3" = xyes],
 AM_CONDITIONAL([GTK3], [test "x$gtk_package" = "xgtk+-3.0"])
 
 # GTK/GLib/GIO checks
-gtk_modules="$gtk_package >= $gtk_min_version glib-2.0 >= 2.28"
-gtk_modules_private="gio-2.0 >= 2.28 gmodule-no-export-2.0"
+gtk_modules="$gtk_package >= $gtk_min_version glib-2.0 >= 2.32"
+gtk_modules_private="gio-2.0 >= 2.32 gmodule-no-export-2.0"
 PKG_CHECK_MODULES([GTK], [$gtk_modules $gtk_modules_private])
 AC_SUBST([DEPENDENCIES], [$gtk_modules])
-dnl Define minimum requirements to avoid warnings about symbols deprecated afterward.
-dnl Although GLIB_VERSION_2_28 is new in 2.32, older versions won't evaluate
-dnl GLIB_VERSION_MIN_REQUIRED so it won't be a problem.
-AS_VAR_APPEND([GTK_CFLAGS], [" -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_28"])
+AS_VAR_APPEND([GTK_CFLAGS], [" -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_32"])
 dnl Disable all GTK deprecations on 3.x so long as we want to keep 2.x support and only require 3.0.
 dnl No need on 2.x as we target the latest version.
 AM_COND_IF([GTK3], [AS_VAR_APPEND([GTK_CFLAGS], [" -DGDK_DISABLE_DEPRECATION_WARNINGS"])])


Modified: scintilla/gtk/ScintillaGTK.cxx
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -3250,6 +3250,7 @@ void scintilla_release_resources(void) {
 static void *copy_(void *src) { return src; }
 static void free_(void *doc) { }
 
+GEANY_API_SYMBOL
 GType scnotification_get_type(void) {
 	static gsize type_id = 0;
 	if (g_once_init_enter(&type_id)) {


Modified: scintilla/scintilla_changes.patch
8 lines changed, 8 insertions(+), 0 deletions(-)
===================================================================
@@ -50,6 +50,14 @@ index 0871ca2..49dc278 100644
  GtkWidget *scintilla_object_new() {
  	return scintilla_new();
  }
+@@ -3250,6 +3250,7 @@ void scintilla_release_resources(void) {
+ static void *copy_(void *src) { return src; }
+ static void free_(void *doc) { }
+ 
++GEANY_API_SYMBOL
+ GType scnotification_get_type(void) {
+ 	static gsize type_id = 0;
+ 	if (g_once_init_enter(&type_id)) {
 diff --git scintilla/src/Catalogue.cxx scintilla/src/Catalogue.cxx
 index ed47aa8..e58f1ab 100644
 --- scintilla/src/Catalogue.cxx


Modified: scripts/cross-build-mingw.sh
5 lines changed, 3 insertions(+), 2 deletions(-)
===================================================================
@@ -54,7 +54,7 @@ fetch_and_unzip()
 {
   local basename=${1##*/}
   curl -L -# "$1" > "$basename"
-  unzip -q "$basename" -d "$2"
+  unzip -qn "$basename" -d "$2"
   rm -f "$basename"
 }
 
@@ -87,7 +87,8 @@ mkdir "$BUILDDIR"
 cd "$BUILDDIR"
 
 mkdir _deps
-fetch_and_unzip "$BUNDLE_ZIP" _deps
+fetch_and_unzip "$GTK3_BUNDLE_ZIP" _deps
+[ "$GTK3" = yes ] || fetch_and_unzip "$BUNDLE_ZIP" _deps
 # fixup the prefix= in the pkg-config files
 sed -i "s%^\(prefix=\).*$%\1$PWD/_deps%" _deps/lib/pkgconfig/*.pc
 


Modified: src/document.c
12 lines changed, 12 insertions(+), 0 deletions(-)
===================================================================
@@ -3847,3 +3847,15 @@ void document_grab_focus(GeanyDocument *doc)
 
 	gtk_widget_grab_focus(GTK_WIDGET(doc->editor->sci));
 }
+
+static void        *copy_(void *src) { return src; }
+static void         free_(void *doc) { }
+
+/** @gironly
+ * Gets the GType of GeanyDocument
+ *
+ * @return the GeanyDocument type */
+GEANY_API_SYMBOL
+GType document_get_type (void);
+
+G_DEFINE_BOXED_TYPE(GeanyDocument, document, copy_, free_);


Modified: src/document.h
3 lines changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -70,6 +70,9 @@ typedef struct GeanyFilePrefs
 GeanyFilePrefs;
 
 
+#define GEANY_TYPE_DOCUMENT (document_get_type())
+GType document_get_type (void);
+
 /**
  *  Structure for representing an open tab with all its properties.
  **/


Modified: src/editor.c
12 lines changed, 12 insertions(+), 0 deletions(-)
===================================================================
@@ -5309,3 +5309,15 @@ void editor_insert_snippet(GeanyEditor *editor, gint pos, const gchar *snippet)
 	editor_insert_text_block(editor, pattern->str, pos, -1, -1, TRUE);
 	g_string_free(pattern, TRUE);
 }
+
+static void        *copy_(void *src) { return src; }
+static void         free_(void *doc) { }
+
+/** @gironly
+ * Gets the GType of GeanyEditor
+ *
+ * @return the GeanyEditor type */
+GEANY_API_SYMBOL
+GType editor_get_type (void);
+
+G_DEFINE_BOXED_TYPE(GeanyEditor, editor, copy_, free_);


Modified: src/editor.h
4 lines changed, 4 insertions(+), 0 deletions(-)
===================================================================
@@ -139,6 +139,10 @@ typedef struct GeanyEditorPrefs
 }
 GeanyEditorPrefs;
 
+
+#define GEANY_TYPE_EDITOR (editor_get_type())
+GType editor_get_type (void);
+
 /** Editor-owned fields for each document. */
 typedef struct GeanyEditor
 {


Modified: src/filetypes.c
12 lines changed, 12 insertions(+), 0 deletions(-)
===================================================================
@@ -1585,3 +1585,15 @@ gboolean filetype_get_comment_open_close(const GeanyFiletype *ft, gboolean singl
 
 	return !EMPTY(*co);
 }
+
+static void        *copy_(void *src) { return src; }
+static void         free_(void *doc) { }
+
+/** @gironly
+ * Gets the GType of GeanyFiletype
+ *
+ * @return the GeanyFiletype type */
+GEANY_API_SYMBOL
+GType filetype_get_type (void);
+
+G_DEFINE_BOXED_TYPE(GeanyFiletype, filetype, copy_, free_);


Modified: src/filetypes.h
3 lines changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -186,6 +186,9 @@ const gchar *filetypes_get_display_name(GeanyFiletype *ft);
 
 const GSList *filetypes_get_sorted_by_name(void);
 
+#define GEANY_TYPE_FILETYPE (filetype_get_type())
+
+GType filetype_get_type (void);
 
 #ifdef GEANY_PRIVATE
 


Modified: src/geanyobject.c
219 lines changed, 43 insertions(+), 176 deletions(-)
===================================================================
@@ -52,72 +52,16 @@ struct _GeanyObjectPrivate
 	gchar dummy;
 };
 
+/** @gironly
+ * Get the GObject-derived GType for GeanyObject
+ *
+ * @return GeanyObject type */
+GEANY_API_SYMBOL
+GType geany_object_get_type(void);
 
 G_DEFINE_TYPE(GeanyObject, geany_object, G_TYPE_OBJECT)
 
 
-
-static void geany_cclosure_marshal_VOID__STRING_INT_POINTER(GClosure *closure, GValue *ret_val,
-				guint n_param_vals, const GValue *param_values, gpointer hint, gpointer mdata)
-{
-	typedef gboolean (*GeanyMarshalFunc_VOID__STRING_INT_POINTER)
-		(gpointer data1, gconstpointer arg_1, gint arg_2, gpointer arg_3, gpointer data2);
-
-	register GeanyMarshalFunc_VOID__STRING_INT_POINTER callback;
-	register GCClosure* cc = (GCClosure*) closure;
-	register gpointer data1, data2;
-
-	g_return_if_fail(n_param_vals == 4);
-
-	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 = (GeanyMarshalFunc_VOID__STRING_INT_POINTER) (mdata ? mdata : cc->callback);
-	callback(data1,
-			  g_value_get_string(param_values + 1),
-			  g_value_get_int(param_values + 2),
-			  g_value_get_pointer(param_values + 3),
-			  data2);
-}
-
-
-static void geany_cclosure_marshal_VOID__POINTER_POINTER(GClosure *closure, GValue *ret_val,
-				guint n_param_vals, const GValue *param_values, gpointer hint, gpointer mdata)
-{
-	typedef gboolean (*GeanyMarshalFunc_VOID__POINTER_POINTER)
-		(gpointer data1, gconstpointer arg_1, gconstpointer arg_2, gpointer data2);
-
-	register GeanyMarshalFunc_VOID__POINTER_POINTER callback;
-	register GCClosure* cc = (GCClosure*) closure;
-	register gpointer data1, data2;
-
-	g_return_if_fail(n_param_vals == 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 = (GeanyMarshalFunc_VOID__POINTER_POINTER) (mdata ? mdata : cc->callback);
-	callback(data1,
-			  g_value_get_pointer(param_values + 1),
-			  g_value_get_pointer(param_values + 2),
-			  data2);
-}
-
-
 static gboolean boolean_handled_accumulator(GSignalInvocationHint *ihint, GValue *return_accu,
 											const GValue *handler_return, gpointer dummy)
 {
@@ -131,231 +75,154 @@ static gboolean boolean_handled_accumulator(GSignalInvocationHint *ihint, GValue
 }
 
 
-static void geany_cclosure_marshal_BOOL__POINTER_POINTER(GClosure *closure, GValue *return_value,
-								guint n_param_values, const GValue *param_values,
-								gpointer invocation_hint G_GNUC_UNUSED, gpointer marshal_data)
-{
-	typedef gboolean (*GeanyMarshalFunc_BOOLEAN__POINTER_POINTER)
-		(gpointer data1, gpointer arg_1, gpointer arg_2, gpointer data2);
-
-	register GeanyMarshalFunc_BOOLEAN__POINTER_POINTER callback;
-	register GCClosure *cc = (GCClosure*) closure;
-	register gpointer data1, data2;
-	gboolean v_return;
-
-	g_return_if_fail(return_value != NULL);
-	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 = (GeanyMarshalFunc_BOOLEAN__POINTER_POINTER)
-		(marshal_data ? marshal_data : cc->callback);
-
-	v_return = callback(data1,
-					   g_value_get_pointer(param_values + 1),
-					   g_value_get_pointer(param_values + 2),
-					   data2);
-
-	g_value_set_boolean(return_value, v_return);
-}
-
-
 static void create_signals(GObjectClass *g_object_class)
 {
 	/* Document signals */
 	geany_object_signals[GCB_DOCUMENT_NEW] = g_signal_new (
 		"document-new",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_new),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_DOCUMENT_OPEN] = g_signal_new (
 		"document-open",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_open),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_DOCUMENT_RELOAD] = g_signal_new (
 		"document-reload",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_reload),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_DOCUMENT_BEFORE_SAVE] = g_signal_new (
 		"document-before-save",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_before_save),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_DOCUMENT_SAVE] = g_signal_new (
 		"document-save",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_save),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_DOCUMENT_FILETYPE_SET] = g_signal_new (
 		"document-filetype-set",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_filetype_set),
-		NULL, NULL,
-		geany_cclosure_marshal_VOID__POINTER_POINTER,
+		0, NULL, NULL, NULL,
 		G_TYPE_NONE, 2,
-		G_TYPE_POINTER, G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT, GEANY_TYPE_FILETYPE);
 	geany_object_signals[GCB_DOCUMENT_ACTIVATE] = g_signal_new (
 		"document-activate",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_activate),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_DOCUMENT_CLOSE] = g_signal_new (
 		"document-close",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, document_close),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GEANY_TYPE_DOCUMENT);
 
 	/* Project signals */
 	geany_object_signals[GCB_PROJECT_OPEN] = g_signal_new (
 		"project-open",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, project_open),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		G_TYPE_KEY_FILE);
 	geany_object_signals[GCB_PROJECT_SAVE] = g_signal_new (
 		"project-save",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, project_save),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		G_TYPE_KEY_FILE);
 	geany_object_signals[GCB_PROJECT_CLOSE] = g_signal_new (
 		"project-close",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, project_close),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__VOID,
+		0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 		G_TYPE_NONE, 0);
 	geany_object_signals[GCB_PROJECT_DIALOG_OPEN] = g_signal_new (
 		"project-dialog-open",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, project_dialog_open),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GTK_TYPE_NOTEBOOK);
 	geany_object_signals[GCB_PROJECT_DIALOG_CONFIRMED] = g_signal_new (
 		"project-dialog-confirmed",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, project_dialog_confirmed),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GTK_TYPE_NOTEBOOK);
 	geany_object_signals[GCB_PROJECT_DIALOG_CLOSE] = g_signal_new (
 		"project-dialog-close",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, project_dialog_close),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		GTK_TYPE_NOTEBOOK);
 
 	/* Editor signals */
 	geany_object_signals[GCB_UPDATE_EDITOR_MENU] = g_signal_new (
 		"update-editor-menu",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, update_editor_menu),
-		NULL, NULL,
-		geany_cclosure_marshal_VOID__STRING_INT_POINTER,
+		0, NULL, NULL, NULL,
 		G_TYPE_NONE, 3,
-		G_TYPE_STRING, G_TYPE_INT, G_TYPE_POINTER);
+		G_TYPE_STRING, G_TYPE_INT, GEANY_TYPE_DOCUMENT);
 	geany_object_signals[GCB_EDITOR_NOTIFY] = g_signal_new (
 		"editor-notify",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_LAST,
-		G_STRUCT_OFFSET (GeanyObjectClass, update_editor_menu),
-		boolean_handled_accumulator, NULL,
-		geany_cclosure_marshal_BOOL__POINTER_POINTER,
+		0, boolean_handled_accumulator, NULL, NULL,
 		G_TYPE_BOOLEAN, 2,
-		G_TYPE_POINTER, G_TYPE_POINTER);
+		GEANY_TYPE_EDITOR, SCINTILLA_TYPE_NOTIFICATION);
 
 	/* General signals */
 	geany_object_signals[GCB_GEANY_STARTUP_COMPLETE] = g_signal_new (
 		"geany-startup-complete",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, geany_startup_complete),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__VOID,
+		0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 		G_TYPE_NONE, 0);
 	geany_object_signals[GCB_BUILD_START] = g_signal_new (
 		"build-start",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, build_start),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__VOID,
+		0, NULL, NULL, g_cclosure_marshal_VOID__VOID,
 		G_TYPE_NONE, 0);
 
 	/* Core-only signals */
 	geany_object_signals[GCB_SAVE_SETTINGS] = g_signal_new (
 		"save-settings",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, save_settings),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		G_TYPE_KEY_FILE);
 	geany_object_signals[GCB_LOAD_SETTINGS] = g_signal_new (
 		"load-settings",
 		G_OBJECT_CLASS_TYPE (g_object_class),
 		G_SIGNAL_RUN_FIRST,
-		G_STRUCT_OFFSET (GeanyObjectClass, load_settings),
-		NULL, NULL,
-		g_cclosure_marshal_VOID__POINTER,
+		0, NULL, NULL, g_cclosure_marshal_VOID__BOXED,
 		G_TYPE_NONE, 1,
-		G_TYPE_POINTER);
+		G_TYPE_KEY_FILE);
 }
 
 


Modified: src/geanyobject.h
25 lines changed, 4 insertions(+), 21 deletions(-)
===================================================================
@@ -74,6 +74,8 @@ GeanyCallbackId;
 typedef struct _GeanyObject				GeanyObject;
 typedef struct _GeanyObjectClass			GeanyObjectClass;
 
+/** @gironly
+ * Instance structure for GeanyObject */
 struct _GeanyObject
 {
 	GObject parent;
@@ -82,30 +84,11 @@ struct _GeanyObject
 
 extern GObject *geany_object;
 
+/** @gironly
+ * Class structure for @a GeanyObject */
 struct _GeanyObjectClass
 {
 	GObjectClass parent_class;
-
-	void (*document_new)(GeanyDocument *doc);
-	void (*document_open)(GeanyDocument *doc);
-	void (*document_reload)(GeanyDocument *doc);
-	void (*document_before_save)(GeanyDocument *doc);
-	void (*document_save)(GeanyDocument *doc);
-	void (*document_filetype_set)(GeanyDocument *doc, GeanyFiletype *filetype_old);
-	void (*document_activate)(GeanyDocument *doc);
-	void (*document_close)(GeanyDocument *doc);
-	void (*project_open)(GKeyFile *keyfile);
-	void (*project_save)(GKeyFile *keyfile);
-	void (*project_close)(void);
-	void (*project_dialog_open)(GtkWidget *notebook);
-	void (*project_dialog_confirmed)(GtkWidget *notebook);
-	void (*project_dialog_close)(GtkWidget *notebook);
-	void (*update_editor_menu)(const gchar *word, gint click_pos, GeanyDocument *doc);
-	gboolean (*editor_notify)(GeanyEditor *editor, gpointer scnt);
-	void (*geany_startup_complete)(void);
-	void (*build_start)(void);
-	void (*save_settings)(GKeyFile *keyfile);
-	void (*load_settings)(GKeyFile *keyfile);
 };
 
 GType		geany_object_get_type	(void);


Modified: src/plugindata.h
6 lines changed, 6 insertions(+), 0 deletions(-)
===================================================================
@@ -183,6 +183,12 @@ typedef struct GeanyData
 	struct GeanyTemplatePrefs	*template_prefs;	/**< Template settings */
 	gpointer					*_compat;			/* Remove field on next ABI break (abi-todo) */
 	GSList						*filetypes_by_title; /**< See filetypes.h#filetypes_by_title. */
+	/** @gironly
+	 * Global object signalling events via signals
+	 *
+	 * This is mostly for language bindings. Otherwise prefer to use
+	 * plugin_signal_connect() instead this which adds automatic cleanup. */
+	GObject						*object;
 }
 GeanyData;
 


Modified: src/plugins.c
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -120,7 +120,8 @@ geany_data_init(void)
 		&tool_prefs,
 		&template_prefs,
 		NULL, /* Remove field on next ABI break (abi-todo) */
-		filetypes_by_title
+		filetypes_by_title,
+		geany_object,
 	};
 
 	geany_data = gd;



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list