[geany/geany-plugins] 4cb69f: autoclose: Refactor so that "document-close" is not necessary.

Thomas Martitz git-noreply at xxxxx
Wed Nov 13 22:57:18 UTC 2013


Branch:      refs/heads/master
Author:      Thomas Martitz <thomas.martitz at student.htw-berlin.de>
Committer:   Thomas Martitz <thomas.martitz at student.htw-berlin.de>
Date:        Wed, 13 Nov 2013 22:57:18 UTC
Commit:      4cb69f39e0c202c122f3c6aee36ad075fcd90aed
             https://github.com/geany/geany-plugins/commit/4cb69f39e0c202c122f3c6aee36ad075fcd90aed

Log Message:
-----------
autoclose: Refactor so that "document-close" is not necessary.

The document-close handler was just to free data and disconnect handlers
associated to the sci widget. The former can be simplified with
g_object_set_data_full() and the signal handler will be disconnected anyway
on widget destroy.


Modified Paths:
--------------
    autoclose/src/autoclose.c

Modified: autoclose/src/autoclose.c
23 files changed, 4 insertions(+), 19 deletions(-)
===================================================================
@@ -780,9 +780,8 @@ struct_semicolon(
 	if (!ac_info->jump_on_tab)
 		return;
 	g_return_if_fail(data);
-	g_return_if_fail(DOC_VALID(data->doc));
 
-	ScintillaObject *sci = data->doc->editor->sci;
+	ScintillaObject *sci = SCINTILLA(obj);
 	/* reset jump_on_tab state when user clicked away */
 	gboolean updated_sel  = nt->updated & SC_UPDATE_SELECTION;
 	gboolean updated_text = nt->updated & SC_UPDATE_CONTENT;
@@ -801,8 +800,6 @@ struct_semicolon(
 	data->last_line = new_line;
 }
 
-#define AC_GOBJECT_KEY "autoclose-userdata"
-
 static void
 on_document_open(GObject *obj, GeanyDocument *doc, gpointer user_data)
 {
@@ -814,29 +811,17 @@ struct_semicolon(
 	data = g_new0(AutocloseUserData, 1);
 	data->doc = doc;
 	plugin_signal_connect(geany_plugin, G_OBJECT(sci), "sci-notify",
-		FALSE, G_CALLBACK(on_sci_notify), data);
+		    FALSE, G_CALLBACK(on_sci_notify), data);
 	plugin_signal_connect(geany_plugin, G_OBJECT(sci), "key-press-event",
 			FALSE, G_CALLBACK(on_key_press), data);
-	/* save data pointer via GObject too for on_document_close() */
-	g_object_set_data(G_OBJECT(sci), AC_GOBJECT_KEY, data);
-}
-
-static void
-on_document_close(GObject *obj, GeanyDocument *doc, gpointer user_data)
-{
-	/* free the AutocloseUserData instance and disconnect the handler */
-	ScintillaObject   *sci = doc->editor->sci;
-	AutocloseUserData *data = g_object_steal_data(G_OBJECT(sci), AC_GOBJECT_KEY);
-	/* no plugin_signal_disconnect() ?? */
-	g_signal_handlers_disconnect_by_func(G_OBJECT(sci), G_CALLBACK(on_sci_notify), data);
-	g_free(data);
+	/* This will free the data when the sci is destroyed */
+	g_object_set_data_full(G_OBJECT(sci), "autoclose-userdata", data, g_free);
 }
 
 PluginCallback plugin_callbacks[] =
 {
 	{ "document-open",  (GCallback) &on_document_open, FALSE, NULL },
 	{ "document-new",   (GCallback) &on_document_open, FALSE, NULL },
-	{ "document-close", (GCallback) &on_document_close,    FALSE, NULL },
 	{ NULL, NULL, FALSE, NULL }
 };
 



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


More information about the Plugins-Commits mailing list