summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2016-06-18 13:52:23 +0200
committerMarcel Ziswiler <marcel.ziswiler@toradex.com>2017-01-11 17:34:54 +0100
commit9c816027d37f61b0d70fe26bb769e4398251b507 (patch)
tree29c4965df3a57c08cf908e584e37b1e72a17feef
parentd3bfbbbc72a4c13033c48beed27134d413eb5fdd (diff)
lxterminal: make it compatible with vte api 2.91 and move to gtk+ 3
While at it remove unneeded RDEPENDS, these are pulled in automatically by oe. Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com> Acked-by: Marcel Ziswiler <marcel.ziswiler@toradex.com>
-rw-r--r--recipes-lxde/lxterminal/lxterminal/support_for_vte_0.38.0.patch363
-rw-r--r--recipes-lxde/lxterminal/lxterminal_0.2.0.bb9
2 files changed, 369 insertions, 3 deletions
diff --git a/recipes-lxde/lxterminal/lxterminal/support_for_vte_0.38.0.patch b/recipes-lxde/lxterminal/lxterminal/support_for_vte_0.38.0.patch
new file mode 100644
index 0000000..820b4a8
--- /dev/null
+++ b/recipes-lxde/lxterminal/lxterminal/support_for_vte_0.38.0.patch
@@ -0,0 +1,363 @@
+Backport from https://github.com/lxde/lxterminal/commit/164a4cf56af423d3445c15a6e7aceae46e048dd5
+
+From 164a4cf56af423d3445c15a6e7aceae46e048dd5 Mon Sep 17 00:00:00 2001
+From: FinboySlick <jonathan@navigue.com>
+Date: Thu, 23 Jul 2015 16:05:19 -0400
+Subject: [PATCH] Support for vte>=0.38.0 -- Thanks Gyorgy Ballo
+
+---
+ configure.ac | 4 +++-
+ src/lxterminal.c | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++-
+ src/preferences.c | 17 ++++++++++++++
+ src/setting.c | 30 ++++++++++++++++++++++++
+ src/setting.h | 6 +++++
+ 5 files changed, 124 insertions(+), 2 deletions(-)
+
+diff --git a/configure.ac b/configure.ac
+index fb03567..e502c78 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -56,7 +56,9 @@ PKG_CHECK_MODULES(glib, [glib-2.0 >= 2.6.0])
+ PKG_CHECK_MODULES(x11, [x11 >= 1.0])
+
+ if test "x$enable_gtk3" = "xyes" ; then
+-PKG_CHECK_MODULES(vte, [vte-2.90 >= 0.20.0])
++PKG_CHECK_MODULES(vte, [vte-2.91 >= 0.20.0],, [
++ PKG_CHECK_MODULES(vte, [vte-2.90 >= 0.20.0])
++])
+ else
+ PKG_CHECK_MODULES(vte, [vte >= 0.20.0])
+ fi
+diff --git a/src/lxterminal.c b/src/lxterminal.c
+index d85203c..7980a42 100644
+--- a/src/lxterminal.c
++++ b/src/lxterminal.c
+@@ -39,6 +39,27 @@
+ #include "unixsocket.h"
+
+ /* Linux color for palette. */
++#if VTE_CHECK_VERSION (0, 38, 0)
++static const GdkRGBA linux_color[16] =
++{
++ { 0, 0, 0, 1 },
++ { 0.67, 0, 0, 1 },
++ { 0, 0.67, 0, 1 },
++ { 0.67, 0.33, 0, 1 },
++ { 0, 0, 0.67, 1 },
++ { 0.67, 0, 0.67, 1 },
++ { 0, 0.67, 0.67, 1 },
++ { 0.67, 0.67, 0.67, 1 },
++ { 0.33, 0.33, 0.33, 1 },
++ { 1, 0.33, 0.33, 1 },
++ { 0.33, 1, 0.33, 1 },
++ { 1, 1, 0.33, 1 },
++ { 0.33, 0.33, 1, 1 },
++ { 1, 0.33, 1, 1 },
++ { 0.33, 1, 1, 1 },
++ { 1, 1, 1, 1 }
++};
++#else
+ static const GdkColor linux_color[16] =
+ {
+ { 0, 0x0000, 0x0000, 0x0000 },
+@@ -58,6 +79,7 @@ static const GdkColor linux_color[16] =
+ { 0, 0x5555, 0xffff, 0xffff },
+ { 0, 0xffff, 0xffff, 0xffff }
+ };
++#endif
+
+ /* X accessor. */
+ static void gdk_window_get_geometry_hints(GdkWindow * window, GdkGeometry * geometry, GdkWindowHints * geometry_mask);
+@@ -239,7 +261,18 @@ static void gdk_window_get_geometry_hints(GdkWindow * window, GdkGeometry * geom
+ /* Accessor for border values from VteTerminal. */
+ static GtkBorder * terminal_get_border(Term * term)
+ {
+-#if VTE_CHECK_VERSION(0, 24, 0)
++#if VTE_CHECK_VERSION (0, 38, 0)
++ GtkBorder padding;
++ gtk_style_context_get_padding(gtk_widget_get_style_context(term->vte),
++ gtk_widget_get_state_flags(term->vte),
++ &padding);
++ GtkBorder * border = gtk_border_new();
++ border->left = padding.left;
++ border->right = padding.right;
++ border->top = padding.top;
++ border->bottom = padding.bottom;
++ return border;
++#elif VTE_CHECK_VERSION(0, 24, 0)
+ /* Style property, new in 0.24.0, replaces the function below. */
+ GtkBorder * border;
+ gtk_widget_style_get(term->vte, "inner-border", &border, NULL);
+@@ -1016,10 +1049,19 @@ static void terminal_vte_commit(VteTerminal * vte, gchar * text, guint size, Ter
+ static void terminal_settings_apply_to_term(LXTerminal * terminal, Term * term)
+ {
+ Setting * setting = get_setting();
++#if VTE_CHECK_VERSION (0, 38, 0)
++ PangoFontDescription * font_desc;
++#endif
+
+ /* Terminal properties. */
++#if VTE_CHECK_VERSION (0, 38, 0)
++ font_desc = pango_font_description_from_string(setting->font_name);
++ vte_terminal_set_font(VTE_TERMINAL(term->vte), font_desc);
++ pango_font_description_free(font_desc);
++#else
+ vte_terminal_set_font_from_string(VTE_TERMINAL(term->vte), setting->font_name);
+ vte_terminal_set_word_chars(VTE_TERMINAL(term->vte), setting->word_selection_characters);
++#endif
+ vte_terminal_set_scrollback_lines(VTE_TERMINAL(term->vte), setting->scrollback);
+ vte_terminal_set_allow_bold(VTE_TERMINAL(term->vte), ! setting->disallow_bold);
+ vte_terminal_set_cursor_blink_mode(VTE_TERMINAL(term->vte), ((setting->cursor_blink) ? VTE_CURSOR_BLINK_ON : VTE_CURSOR_BLINK_OFF));
+@@ -1028,6 +1070,7 @@ static void terminal_settings_apply_to_term(LXTerminal * terminal, Term * term)
+ vte_terminal_set_mouse_autohide(VTE_TERMINAL(term->vte), setting->hide_pointer);
+
+ /* Background and foreground colors. */
++#if !VTE_CHECK_VERSION (0, 38, 0)
+ if (terminal->rgba)
+ {
+ /* vte_terminal_queue_background_update doesn't run without changing background. */
+@@ -1040,6 +1083,7 @@ static void terminal_settings_apply_to_term(LXTerminal * terminal, Term * term)
+ vte_terminal_set_background_transparent(VTE_TERMINAL(term->vte), setting->background_alpha == 65535 ? FALSE : TRUE);
+ vte_terminal_set_background_saturation(VTE_TERMINAL(term->vte), 1 - ((double) setting->background_alpha / 65535));
+ }
++#endif
+ vte_terminal_set_colors(VTE_TERMINAL(term->vte), &setting->foreground_color, &setting->background_color, &linux_color[0], 16);
+
+ /* Hide or show scrollbar. */
+@@ -1086,8 +1130,12 @@ static Term * terminal_new(LXTerminal * terminal, const gchar * label, const gch
+
+ /* Set up the VTE. */
+ setlocale(LC_ALL, "");
++#if VTE_CHECK_VERSION (0, 38, 0)
++ vte_terminal_set_encoding(VTE_TERMINAL(term->vte), nl_langinfo(CODESET), NULL);
++#else
+ vte_terminal_set_emulation(VTE_TERMINAL(term->vte), "xterm");
+ vte_terminal_set_encoding(VTE_TERMINAL(term->vte), nl_langinfo(CODESET));
++#endif
+ vte_terminal_set_backspace_binding(VTE_TERMINAL(term->vte), VTE_ERASE_ASCII_DELETE);
+ vte_terminal_set_delete_binding(VTE_TERMINAL(term->vte), VTE_ERASE_DELETE_SEQUENCE);
+
+@@ -1133,7 +1181,11 @@ static Term * terminal_new(LXTerminal * terminal, const gchar * label, const gch
+ gtk_widget_show_all(term->tab);
+
+ /* Set up scrollbar. */
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gtk_range_set_adjustment(GTK_RANGE(term->scrollbar), gtk_scrollable_get_vadjustment(GTK_SCROLLABLE(term->vte)));
++#else
+ gtk_range_set_adjustment(GTK_RANGE(term->scrollbar), vte_terminal_get_adjustment(VTE_TERMINAL(term->vte)));
++#endif
+
+ /* Fork the process that will have the VTE as its controlling terminal. */
+ if (exec == NULL)
+@@ -1144,6 +1196,20 @@ static Term * terminal_new(LXTerminal * terminal, const gchar * label, const gch
+ gchar ** command;
+ g_shell_parse_argv(exec, NULL, &command, NULL);
+
++#if VTE_CHECK_VERSION (0, 38, 0)
++ vte_terminal_spawn_sync(
++ VTE_TERMINAL(term->vte),
++ VTE_PTY_NO_LASTLOG | VTE_PTY_NO_UTMP | VTE_PTY_NO_WTMP,
++ pwd,
++ exec,
++ env,
++ G_SPAWN_SEARCH_PATH | G_SPAWN_FILE_AND_ARGV_ZERO,
++ NULL,
++ NULL,
++ &term->pid,
++ NULL,
++ NULL);
++#else
+ vte_terminal_fork_command_full(
+ VTE_TERMINAL(term->vte),
+ VTE_PTY_NO_LASTLOG | VTE_PTY_NO_UTMP | VTE_PTY_NO_WTMP,
+@@ -1155,6 +1221,7 @@ static Term * terminal_new(LXTerminal * terminal, const gchar * label, const gch
+ NULL,
+ &term->pid,
+ NULL);
++#endif
+ g_strfreev(command);
+
+ /* Connect signals. */
+diff --git a/src/preferences.c b/src/preferences.c
+index 4cb18ce..eda989c 100644
+--- a/src/preferences.c
++++ b/src/preferences.c
+@@ -21,6 +21,7 @@
+ #include <glib.h>
+ #include <gtk/gtk.h>
+ #include <glib/gi18n.h>
++#include <vte/vte.h>
+
+ #include "lxterminal.h"
+ #include "setting.h"
+@@ -37,6 +38,9 @@ static void preferences_dialog_font_set_event(GtkFontButton * widget, Setting *
+ /* Handler for "color-set" signal on Background Color color button. */
+ static void preferences_dialog_background_color_set_event(GtkColorButton * widget, Setting * setting)
+ {
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gtk_color_button_get_rgba(widget, &setting->background_color);
++#else
+ gtk_color_button_get_color(widget, &setting->background_color);
+ setting->background_alpha = gtk_color_button_get_alpha(widget);
+
+@@ -44,12 +48,17 @@ static void preferences_dialog_background_color_set_event(GtkColorButton * widge
+ {
+ setting->background_alpha = 1;
+ }
++#endif
+ }
+
+ /* Handler for "color-set" signal on Foreground Color color button. */
+ static void preferences_dialog_foreground_color_set_event(GtkColorButton * widget, Setting * setting)
+ {
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gtk_color_button_get_rgba(widget, &setting->foreground_color);
++#else
+ gtk_color_button_get_color(widget, &setting->foreground_color);
++#endif
+ }
+
+ /* Handler for "toggled" signal on Allow Bold toggle button.
+@@ -183,13 +192,21 @@ void terminal_preferences_dialog(GtkAction * action, LXTerminal * terminal)
+ g_signal_connect(G_OBJECT(w), "font-set", G_CALLBACK(preferences_dialog_font_set_event), setting);
+
+ w = GTK_WIDGET(gtk_builder_get_object(builder, "background_color"));
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gtk_color_button_set_rgba(GTK_COLOR_BUTTON(w), &setting->background_color);
++#else
+ gtk_color_button_set_color(GTK_COLOR_BUTTON(w), &setting->background_color);
+ gtk_color_button_set_alpha(GTK_COLOR_BUTTON(w), setting->background_alpha);
++#endif
+ g_signal_connect(G_OBJECT(w), "color-set",
+ G_CALLBACK(preferences_dialog_background_color_set_event), setting);
+
+ w = GTK_WIDGET(gtk_builder_get_object(builder, "foreground_color"));
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gtk_color_button_set_rgba(GTK_COLOR_BUTTON(w), &setting->foreground_color);
++#else
+ gtk_color_button_set_color(GTK_COLOR_BUTTON(w), &setting->foreground_color);
++#endif
+ g_signal_connect(G_OBJECT(w), "color-set",
+ G_CALLBACK(preferences_dialog_foreground_color_set_event), setting);
+
+diff --git a/src/setting.c b/src/setting.c
+index d115313..7ce79b2 100644
+--- a/src/setting.c
++++ b/src/setting.c
+@@ -22,6 +22,7 @@
+ #include <gtk/gtk.h>
+ #include <glib/gi18n.h>
+ #include <glib/gstdio.h>
++#include <vte/vte.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <errno.h>
+@@ -40,11 +41,19 @@ void print_setting()
+ g_return_if_fail (setting != NULL);
+
+ printf("Font name: %s\n", setting->font_name);
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gchar * p = gdk_rgba_to_string(&setting->background_color);
++#else
+ gchar * p = gdk_color_to_string(&setting->background_color);
++#endif
+ printf("Background color: %s\n", p);
+ g_free(p);
++#if VTE_CHECK_VERSION (0, 38, 0)
++ p = gdk_rgba_to_string(&setting->foreground_color);
++#else
+ printf("Background Alpha: %i\n", setting->background_alpha);
+ p = gdk_color_to_string(&setting->foreground_color);
++#endif
+ printf("Foreground color: %s\n", p);
+ g_free(p);
+ printf("Disallow bolding by VTE: %i\n", setting->disallow_bold);
+@@ -98,12 +107,20 @@ void save_setting()
+
+ /* Push settings to GKeyFile. */
+ g_key_file_set_string(setting->keyfile, GENERAL_GROUP, FONT_NAME, setting->font_name);
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gchar * p = gdk_rgba_to_string(&setting->background_color);
++#else
+ gchar * p = gdk_color_to_string(&setting->background_color);
++#endif
+ if (p != NULL)
+ g_key_file_set_string(setting->keyfile, GENERAL_GROUP, BG_COLOR, p);
+ g_free(p);
++#if VTE_CHECK_VERSION (0, 38, 0)
++ p = gdk_rgba_to_string(&setting->foreground_color);
++#else
+ g_key_file_set_integer(setting->keyfile, GENERAL_GROUP, BG_ALPHA, setting->background_alpha);
+ p = gdk_color_to_string(&setting->foreground_color);
++#endif
+ if (p != NULL)
+ g_key_file_set_string(setting->keyfile, GENERAL_GROUP, FG_COLOR, p);
+ g_free(p);
+@@ -235,8 +252,13 @@ Setting * load_setting()
+ setting = g_slice_new0(Setting);
+
+ /* Initialize nonzero integer values to defaults. */
++#if VTE_CHECK_VERSION (0, 38, 0)
++ setting->background_color.alpha = setting->foreground_color.alpha = 1;
++ setting->foreground_color.red = setting->foreground_color.green = setting->foreground_color.blue = (gdouble) 170/255;
++#else
+ setting->background_alpha = 65535;
+ setting->foreground_color.red = setting->foreground_color.green = setting->foreground_color.blue = 0xaaaa;
++#endif
+
+ /* Load configuration. */
+ setting->keyfile = g_key_file_new();
+@@ -248,6 +270,9 @@ Setting * load_setting()
+ char * p = g_key_file_get_string(setting->keyfile, GENERAL_GROUP, BG_COLOR, NULL);
+ if (p != NULL)
+ {
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gdk_rgba_parse(&setting->background_color, p);
++#else
+ gdk_color_parse(p, &setting->background_color);
+ }
+ setting->background_alpha = g_key_file_get_integer(setting->keyfile, GENERAL_GROUP, BG_ALPHA, &error);
+@@ -255,11 +280,16 @@ Setting * load_setting()
+ {
+ /* Set default value if key not found! */
+ setting->background_alpha = 65535;
++#endif
+ }
+ p = g_key_file_get_string(setting->keyfile, GENERAL_GROUP, FG_COLOR, NULL);
+ if (p != NULL)
+ {
++#if VTE_CHECK_VERSION (0, 38, 0)
++ gdk_rgba_parse(&setting->foreground_color, p);
++#else
+ gdk_color_parse(p, &setting->foreground_color);
++#endif
+ }
+ setting->disallow_bold = g_key_file_get_boolean(setting->keyfile, GENERAL_GROUP, DISALLOW_BOLD, NULL);
+ setting->cursor_blink = g_key_file_get_boolean(setting->keyfile, GENERAL_GROUP, CURSOR_BLINKS, NULL);
+diff --git a/src/setting.h b/src/setting.h
+index 283b6a6..2350401 100644
+--- a/src/setting.h
++++ b/src/setting.h
+@@ -22,6 +22,7 @@
+ #define LXTERMINAL_SETTING_H
+
+ #include <gtk/gtk.h>
++#include <vte/vte.h>
+
+ #define GENERAL_GROUP "general"
+ #define FONT_NAME "fontname"
+@@ -72,9 +73,14 @@ typedef struct _setting {
+
+ GKeyFile * keyfile; /* Pointer to GKeyFile containing settings */
+ char * font_name; /* Font name */
++#if VTE_CHECK_VERSION (0, 38, 0)
++ GdkRGBA background_color; /* Background color */
++ GdkRGBA foreground_color; /* Foreground color */
++#else
+ GdkColor background_color; /* Background color */
+ guint16 background_alpha; /* Alpha value to go with background color */
+ GdkColor foreground_color; /* Foreground color */
++#endif
+ gboolean disallow_bold; /* Disallow bolding by VTE */
+ gboolean cursor_blink; /* True if cursor blinks */
+ gboolean cursor_underline; /* True if underline cursor; false if block cursor */
diff --git a/recipes-lxde/lxterminal/lxterminal_0.2.0.bb b/recipes-lxde/lxterminal/lxterminal_0.2.0.bb
index ac9eefc..d841f92 100644
--- a/recipes-lxde/lxterminal/lxterminal_0.2.0.bb
+++ b/recipes-lxde/lxterminal/lxterminal_0.2.0.bb
@@ -4,13 +4,16 @@ SECTION = "x11"
LICENSE = "GPLv2"
LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
-RDEPENDS_{PN} = "gtk+ libvte glib-2.0"
-DEPENDS = "gtk+ vte glib-2.0 intltool-native"
+DEPENDS = "gtk+3 vte glib-2.0 intltool-native"
-SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/lxterminal-${PV}.tar.gz"
+SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/lxterminal-${PV}.tar.gz \
+ file://support_for_vte_0.38.0.patch \
+"
SRC_URI[md5sum] = "e80ad1b6e26212f3d43908c2ad87ba4d"
SRC_URI[sha256sum] = "174b0e99652f72acd7a98b6ff1b75eba1a9bf364996e6f118cccdaba0d282baf"
+EXTRA_OECONF += "--enable-gtk3"
+
FILES_${PN} += "${datadir}/icons/hicolor/128x128/apps/lxterminal.png"
inherit autotools pkgconfig gettext