[geany/geany] d27831: VTE: use proper accessor for the vertical adjustment

Colomban Wendling git-noreply at geany.org
Sat Oct 29 14:02:32 UTC 2016


Branch:      refs/heads/master
Author:      Colomban Wendling <ban at herbesfolles.org>
Committer:   Colomban Wendling <ban at herbesfolles.org>
Date:        Sat, 29 Oct 2016 14:02:32 UTC
Commit:      d27831fa30998c4404676777469ccac518d17719
             https://github.com/geany/geany/commit/d27831fa30998c4404676777469ccac518d17719

Log Message:
-----------
VTE: use proper accessor for the vertical adjustment

Use vte_terminal_get_adjustment() to get the adjustment, and provide an
appropriate default implementation for use if it isn't available (on
VTE < 0.9 or > 0.36).


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

Modified: src/vte.c
18 lines changed, 17 insertions(+), 1 deletions(-)
===================================================================
@@ -120,6 +120,7 @@ struct VteFunctions
 	void (*vte_terminal_select_all) (VteTerminal *terminal);
 	void (*vte_terminal_set_audible_bell) (VteTerminal *terminal, gboolean is_audible);
 	void (*vte_terminal_set_background_image_file) (VteTerminal *terminal, const char *path);
+	GtkAdjustment* (*vte_terminal_get_adjustment) (VteTerminal *terminal);
 };
 
 
@@ -162,6 +163,18 @@ static const GtkTargetEntry dnd_targets[] =
 };
 
 
+/* replacement for vte_terminal_get_adjustment() when it's not available */
+static GtkAdjustment *default_vte_terminal_get_adjustment(VteTerminal *vte)
+{
+#if GTK_CHECK_VERSION(3, 0, 0)
+	if (GTK_IS_SCROLLABLE(vte))
+		return gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(vte));
+#endif
+	/* this is only valid in < 0.38, 0.38 broke ABI */
+	return vte->adjustment;
+}
+
+
 static gchar **vte_get_child_environment(void)
 {
 	const gchar *exclude_vars[] = {"COLUMNS", "LINES", "TERM", "TERM_PROGRAM", NULL};
@@ -283,7 +296,7 @@ static void create_vte(void)
 	GtkWidget *vte, *scrollbar, *hbox;
 
 	vc->vte = vte = vf->vte_terminal_new();
-	scrollbar = gtk_vscrollbar_new(GTK_ADJUSTMENT(VTE_TERMINAL(vte)->adjustment));
+	scrollbar = gtk_vscrollbar_new(vf->vte_terminal_get_adjustment(VTE_TERMINAL(vte)));
 	gtk_widget_set_can_focus(scrollbar, FALSE);
 
 	/* create menu now so copy/paste shortcuts work */
@@ -517,6 +530,9 @@ static gboolean vte_register_symbols(GModule *mod)
 		BIND_REQUIRED_SYMBOL(vte_terminal_set_cursor_blinks);
 	BIND_REQUIRED_SYMBOL(vte_terminal_select_all);
 	BIND_REQUIRED_SYMBOL(vte_terminal_set_audible_bell);
+	if (! BIND_SYMBOL(vte_terminal_get_adjustment))
+		/* vte_terminal_get_adjustment() is available since 0.9 and removed in 0.38 */
+		vf->vte_terminal_get_adjustment = default_vte_terminal_get_adjustment;
 
 	#undef BIND_REQUIRED_SYMBOL
 	#undef BIND_SYMBOL



--------------
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