[arch-commits] Commit in lxterminal/trunk (PKGBUILD vte-0.54.patch)
Balló György
bgyorgy at archlinux.org
Mon Sep 17 15:14:30 UTC 2018
Date: Monday, September 17, 2018 @ 15:14:29
Author: bgyorgy
Revision: 382512
upgpkg: lxterminal 0.3.1-3
Fix close button for vte 0.54 (FS#60035)
Added:
lxterminal/trunk/vte-0.54.patch
Modified:
lxterminal/trunk/PKGBUILD
----------------+
PKGBUILD | 14 +++++-
vte-0.54.patch | 116 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 127 insertions(+), 3 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2018-09-17 15:13:00 UTC (rev 382511)
+++ PKGBUILD 2018-09-17 15:14:29 UTC (rev 382512)
@@ -5,7 +5,7 @@
pkgname=lxterminal
pkgver=0.3.1
-pkgrel=2
+pkgrel=3
pkgdesc="VTE-based terminal emulator (part of LXDE)"
arch=('x86_64')
url="https://lxde.org/"
@@ -15,9 +15,17 @@
makedepends=('intltool')
conflicts=('lxterminal-gtk3')
replaces=('lxterminal-gtk3')
-source=(https://downloads.sourceforge.net/lxde/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('cd8df387c2dd40e03b48caacf700820f9421b421954a0ed56395f505411d2c4b')
+source=(https://downloads.sourceforge.net/lxde/${pkgname}-${pkgver}.tar.xz
+ vte-0.54.patch)
+sha256sums=('cd8df387c2dd40e03b48caacf700820f9421b421954a0ed56395f505411d2c4b'
+ '81d2748782c30b29d4cba0ec910d794d4a87231efb06e9e279c995a84dc0fd75')
+prepare() {
+ cd $pkgname-$pkgver
+ # Fix close button for vte 0.54
+ patch -Np1 -i ../vte-0.54.patch
+}
+
build() {
cd $pkgname-$pkgver
./configure --sysconfdir=/etc --prefix=/usr --enable-gtk3
Added: vte-0.54.patch
===================================================================
--- vte-0.54.patch (rev 0)
+++ vte-0.54.patch 2018-09-17 15:14:29 UTC (rev 382512)
@@ -0,0 +1,116 @@
+From a4eaef43ab3afaea12db70318df7d2db5aad39db Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Yao=20Wei=20=28=E9=AD=8F=E9=8A=98=E5=BB=B7=29?=
+ <mwei at lxde.org>
+Date: Mon, 17 Sep 2018 00:06:56 +0800
+Subject: [PATCH] fix: fix close button handler
+
+---
+ src/lxterminal.c | 21 +++++++++++++++------
+ 1 file changed, 15 insertions(+), 6 deletions(-)
+
+diff --git a/src/lxterminal.c b/src/lxterminal.c
+index a6dc0b3..8802a12 100644
+--- a/src/lxterminal.c
++++ b/src/lxterminal.c
+@@ -82,7 +82,7 @@ static void terminal_child_exited_event(VteTerminal * vte, gint status, Term * t
+ #else
+ static void terminal_child_exited_event(VteTerminal * vte, Term * term);
+ #endif
+-static void terminal_close_button_event(VteTerminal * vte, Term * term);
++static void terminal_close_button_event(GtkButton * button, Term * term);
+ static gboolean terminal_tab_button_press_event(GtkWidget * widget, GdkEventButton * event, Term * term);
+ static void terminal_vte_cursor_moved_event(VteTerminal * vte, Term * term);
+ static gboolean terminal_vte_button_press_event(VteTerminal * vte, GdkEventButton * event, Term * term);
+@@ -458,7 +458,11 @@ static void terminal_vte_size_allocate_event(GtkWidget *widget, GtkAllocation *a
+ static void terminal_close_tab_activate_event(GtkAction * action, LXTerminal * terminal)
+ {
+ Term * term = g_ptr_array_index(terminal->terms, gtk_notebook_get_current_page(GTK_NOTEBOOK(terminal->notebook)));
+- terminal_close_button_event(VTE_TERMINAL(term->vte), term);
++#if VTE_CHECK_VERSION (0, 38, 0)
++ terminal_child_exited_event(VTE_TERMINAL(term->vte), 0, term);
++#else
++ terminal_child_exited_event(VTE_TERMINAL(term->vte), term);
++#endif
+ }
+
+ /* Handler for "activate" signal on File/Close Window menu item.
+@@ -471,7 +475,12 @@ static void terminal_close_window_activate_event(GtkAction * action, LXTerminal
+
+ /* Play it safe and delete tabs one by one. */
+ while(terminal->terms->len > 0) {
+- terminal_close_button_event(NULL, g_ptr_array_index(terminal->terms, 0));
++ Term *term = g_ptr_array_index(terminal->terms, 0);
++#if VTE_CHECK_VERSION (0, 38, 0)
++ terminal_child_exited_event(VTE_TERMINAL(term->vte), 0, term);
++#else
++ terminal_child_exited_event(VTE_TERMINAL(term->vte), term);
++#endif
+ }
+ }
+
+@@ -905,12 +914,12 @@ static void terminal_child_exited_event(VteTerminal * vte, Term * term)
+ }
+
+ /* Adapter for "activate" signal on Close button of tab and File/Close Tab menu item and accelerator. */
+-static void terminal_close_button_event(VteTerminal * vte, Term * term)
++static void terminal_close_button_event(GtkButton * button, Term * term)
+ {
+ #if VTE_CHECK_VERSION (0, 38, 0)
+- terminal_child_exited_event(vte, 0, term);
++ terminal_child_exited_event(VTE_TERMINAL(term->vte), 0, term);
+ #else
+- terminal_child_exited_event(vte, term);
++ terminal_child_exited_event(VTE_TERMINAL(term->vte), term);
+ #endif
+ }
+
+From b7c07ddbced4dd137be1e26b0d519ec742323a26 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Yao=20Wei=20=28=E9=AD=8F=E9=8A=98=E5=BB=B7=29?=
+ <mwei at lxde.org>
+Date: Mon, 17 Sep 2018 00:07:16 +0800
+Subject: [PATCH] fix: prevent calling chiled-exited function more than once
+ per term
+
+child-exited signal behavior changed in VTE 0.54.
+This needs more proper refactoring.
+
+Closes #61
+---
+ src/lxterminal.c | 4 +++-
+ src/lxterminal.h | 1 +
+ 2 files changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/lxterminal.c b/src/lxterminal.c
+index 8802a12..70ed131 100644
+--- a/src/lxterminal.c
++++ b/src/lxterminal.c
+@@ -881,6 +881,8 @@ static void terminal_child_exited_event(VteTerminal * vte, Term * term)
+ {
+ LXTerminal * terminal = term->parent;
+
++ g_signal_handler_disconnect(G_OBJECT(term->vte), term->exit_handler_id);
++
+ /* Last tab being deleted. Deallocate memory and close the window. */
+ if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(terminal->notebook)) == 1)
+ {
+@@ -1278,7 +1280,7 @@ static Term * terminal_new(LXTerminal * terminal, const gchar * label, const gch
+ g_signal_connect(G_OBJECT(term->vte), "button-press-event", G_CALLBACK(terminal_vte_button_press_event), term);
+ g_signal_connect(G_OBJECT(term->vte), "button-release-event", G_CALLBACK(terminal_vte_button_release_event), term);
+ g_signal_connect(G_OBJECT(term->vte), "commit", G_CALLBACK(terminal_vte_commit), term);
+- g_signal_connect(G_OBJECT(term->vte), "child-exited", G_CALLBACK(terminal_child_exited_event), term);
++ term->exit_handler_id = g_signal_connect(G_OBJECT(term->vte), "child-exited", G_CALLBACK(terminal_child_exited_event), term);
+ g_signal_connect(G_OBJECT(term->vte), "cursor-moved", G_CALLBACK(terminal_vte_cursor_moved_event), term);
+ g_signal_connect(G_OBJECT(term->vte), "window-title-changed", G_CALLBACK(terminal_window_title_changed_event), term);
+
+diff --git a/src/lxterminal.h b/src/lxterminal.h
+index 1f4bcdd..b5373d0 100644
+--- a/src/lxterminal.h
++++ b/src/lxterminal.h
+@@ -72,6 +72,7 @@ typedef struct _term {
+ GClosure * closure; /* Accelerator structure */
+ gchar * matched_url;
+ gboolean open_menu_on_button_release;
++ gulong exit_handler_id;
+ } Term;
+
+ /* Output of lxterminal_process_arguments. */
More information about the arch-commits
mailing list