commit f64f8bd8f695c9c5a26192aed610f77051c62163 Author: CentOS Sources Date: Tue Jun 9 20:28:36 2020 +0000 import vte291-0.52.4-2.el8 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..05e410c --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +SOURCES/vte-0.52.4.tar.xz diff --git a/.vte291.metadata b/.vte291.metadata new file mode 100644 index 0000000..bb3e3d8 --- /dev/null +++ b/.vte291.metadata @@ -0,0 +1 @@ +5d2caf64d6debe7d4d0e2a853e93c601c2f39790 SOURCES/vte-0.52.4.tar.xz diff --git a/SOURCES/vte291-build-add-no-exceptions-sanity-check.patch b/SOURCES/vte291-build-add-no-exceptions-sanity-check.patch new file mode 100644 index 0000000..5c88041 --- /dev/null +++ b/SOURCES/vte291-build-add-no-exceptions-sanity-check.patch @@ -0,0 +1,46 @@ +From bba5901e2cd7fe9c0c7cb30983993d924f793792 Mon Sep 17 00:00:00 2001 +From: Christian Persch +Date: Tue, 19 Nov 2019 18:33:12 +0100 +Subject: [PATCH] build: Add no-exceptions sanity check + +Some distributions pass -fexceptions in a way that overrides vte's +own -fno-exceptions. This is a hard error; fail the build. + +See https://gitlab.gnome.org/GNOME/gnome-build-meta/issues/207 + +(cherry picked from commit ff72577bd7d84c30faca3285d7ed4e7f75194f98) +--- + src/vteinternal.hh | 17 +++++++++++++++++ + 1 file changed, 17 insertions(+) + +diff --git a/src/vteinternal.hh b/src/vteinternal.hh +index 1521cd1632fb..0cd20f88c25d 100644 +--- a/src/vteinternal.hh ++++ b/src/vteinternal.hh +@@ -18,6 +18,23 @@ + + #pragma once + ++/* BEGIN sanity checks */ ++ ++/* Some distributions pass -fexceptions in a way that overrides vte's ++ * own -fno-exceptions. This is a hard error; fail the build. ++ * See https://gitlab.gnome.org/GNOME/gnome-build-meta/issues/207 ++ */ ++#ifdef __EXCEPTIONS ++#error You MUST NOT use -fexceptions to build vte! Fix your build; and DO NOT file a bug upstream! ++#endif ++ ++/* While we're at it, check -fno-rtti too */ ++#ifdef __GXX_RTTI ++#error You MUST NOT use -frtti to build vte! Fix your build system; and DO NOT file a bug upstream! ++#endif ++ ++/* END sanity checks */ ++ + #include + + #include "vtedefines.hh" +-- +2.25.4 + diff --git a/SOURCES/vte291-command-notify-scroll-speed.patch b/SOURCES/vte291-command-notify-scroll-speed.patch new file mode 100644 index 0000000..00c24ab --- /dev/null +++ b/SOURCES/vte291-command-notify-scroll-speed.patch @@ -0,0 +1,667 @@ +From 7426c8339c7da0a15f9bd4f536b46b38d96d3904 Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Wed, 7 Jan 2015 16:01:00 +0100 +Subject: [PATCH 1/5] Add sequences and signals for desktop notification + +Add sequences + OSC 777 ; notify ; SUMMARY ; BODY BEL + OSC 777 ; notify ; SUMMARY BEL + OSC 777 ; notify ; SUMMARY ; BODY ST + OSC 777 ; notify ; SUMMARY ST + +that let terminal applications send a notification to the desktop +environment. + +Based on Enlightenment's Terminology: +https://phab.enlightenment.org/T1765 + +https://bugzilla.gnome.org/show_bug.cgi?id=711059 +--- + src/caps-list.hh | 4 ++ + src/marshal.list | 1 + + src/vte.cc | 12 ++++++ + src/vte/vteterminal.h | 4 +- + src/vtegtk.cc | 21 ++++++++++ + src/vtegtk.hh | 1 + + src/vteinternal.hh | 5 +++ + src/vteseq-list.hh | 1 + + src/vteseq.cc | 92 +++++++++++++++++++++++++++++++++++++++++++ + 9 files changed, 140 insertions(+), 1 deletion(-) + +diff --git a/src/caps-list.hh b/src/caps-list.hh +index cc7075c8e7fb..8a3704987a6c 100644 +--- a/src/caps-list.hh ++++ b/src/caps-list.hh +@@ -251,6 +251,8 @@ static const vte_matcher_entry_t entries[] = { + ENTRY(OSC "119" BEL, reset_highlight_foreground_color), + ENTRY(OSC "133;%s" BEL, iterm2_133), + ENTRY(OSC "777;%s" BEL, urxvt_777), ++ ENTRY(OSC "777;%s;%s;%s" BEL, send_notification), ++ ENTRY(OSC "777;%s;%s" BEL, send_notification), + ENTRY(OSC "1337;%s" BEL, iterm2_1337), + + /* Set text parameters, ST_terminated versions. */ +@@ -293,6 +295,8 @@ static const vte_matcher_entry_t entries[] = { + ENTRY(OSC "119" ST, reset_highlight_foreground_color), + ENTRY(OSC "133;%s" ST, iterm2_133), + ENTRY(OSC "777;%s" ST, urxvt_777), ++ ENTRY(OSC "777;%s;%s;%s" ST, send_notification), ++ ENTRY(OSC "777;%s;%s" ST, send_notification), + ENTRY(OSC "1337;%s" ST, iterm2_1337), + + /* These may be bogus, I can't find docs for them anywhere (#104154). */ +diff --git a/src/marshal.list b/src/marshal.list +index 1e4d0c1b6476..3385b4759713 100644 +--- a/src/marshal.list ++++ b/src/marshal.list +@@ -1,5 +1,6 @@ + VOID:INT,INT + VOID:OBJECT,OBJECT + VOID:STRING,BOXED ++VOID:STRING,STRING + VOID:STRING,UINT + VOID:UINT,UINT +diff --git a/src/vte.cc b/src/vte.cc +index 5b08feb94648..7b036a49eec7 100644 +--- a/src/vte.cc ++++ b/src/vte.cc +@@ -8630,6 +8630,9 @@ VteTerminalPrivate::~VteTerminalPrivate() + + remove_update_timeout(this); + ++ g_free (m_notification_summary); ++ g_free (m_notification_body); ++ + /* discard title updates */ + g_free(m_window_title); + g_free(m_window_title_changed); +@@ -10893,6 +10896,15 @@ VteTerminalPrivate::emit_pending_signals() + + emit_adjustment_changed(); + ++ if (m_notification_received) { ++ _vte_debug_print (VTE_DEBUG_SIGNALS, ++ "Emitting `notification-received'.\n"); ++ g_signal_emit(object, signals[SIGNAL_NOTIFICATION_RECEIVED], 0, ++ m_notification_summary, ++ m_notification_body); ++ m_notification_received = FALSE; ++ } ++ + if (m_window_title_changed) { + really_changed = (g_strcmp0(m_window_title, m_window_title_changed) != 0); + g_free (m_window_title); +diff --git a/src/vte/vteterminal.h b/src/vte/vteterminal.h +index 4e2896cf1aaf..f288f9e0f49a 100644 +--- a/src/vte/vteterminal.h ++++ b/src/vte/vteterminal.h +@@ -104,8 +104,10 @@ struct _VteTerminalClass { + + void (*bell)(VteTerminal* terminal); + ++ void (*notification_received)(VteTerminal* terminal, const gchar *summary, const gchar *body); ++ + /* Padding for future expansion. */ +- gpointer padding[16]; ++ gpointer padding[15]; + + VteTerminalClassPrivate *priv; + }; +diff --git a/src/vtegtk.cc b/src/vtegtk.cc +index 755b07aab134..d3f4eaccf1d6 100644 +--- a/src/vtegtk.cc ++++ b/src/vtegtk.cc +@@ -700,6 +700,7 @@ vte_terminal_class_init(VteTerminalClass *klass) + klass->child_exited = NULL; + klass->encoding_changed = NULL; + klass->char_size_changed = NULL; ++ klass->notification_received = NULL; + klass->window_title_changed = NULL; + klass->icon_title_changed = NULL; + klass->selection_changed = NULL; +@@ -775,6 +776,26 @@ vte_terminal_class_init(VteTerminalClass *klass) + G_TYPE_NONE, + 1, G_TYPE_INT); + ++ /** ++ * VteTerminal::notification-received: ++ * @vteterminal: the object which received the signal ++ * @summary: The summary ++ * @body: (allow-none): Extra optional text ++ * ++ * Emitted when a process running in the terminal wants to ++ * send a notification to the desktop environment. ++ */ ++ signals[SIGNAL_NOTIFICATION_RECEIVED] = ++ g_signal_new(I_("notification-received"), ++ G_OBJECT_CLASS_TYPE(klass), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET(VteTerminalClass, notification_received), ++ NULL, ++ NULL, ++ _vte_marshal_VOID__STRING_STRING, ++ G_TYPE_NONE, ++ 2, G_TYPE_STRING, G_TYPE_STRING); ++ + /** + * VteTerminal::window-title-changed: + * @vteterminal: the object which received the signal +diff --git a/src/vtegtk.hh b/src/vtegtk.hh +index c49754ef38ee..126d29326f11 100644 +--- a/src/vtegtk.hh ++++ b/src/vtegtk.hh +@@ -56,6 +56,7 @@ enum { + SIGNAL_TEXT_INSERTED, + SIGNAL_TEXT_MODIFIED, + SIGNAL_TEXT_SCROLLED, ++ SIGNAL_NOTIFICATION_RECEIVED, + SIGNAL_WINDOW_TITLE_CHANGED, + LAST_SIGNAL + }; +diff --git a/src/vteinternal.hh b/src/vteinternal.hh +index 0cd20f88c25d..a426a8ddc562 100644 +--- a/src/vteinternal.hh ++++ b/src/vteinternal.hh +@@ -647,6 +647,11 @@ public: + gboolean m_cursor_moved_pending; + gboolean m_contents_changed_pending; + ++ /* desktop notification */ ++ gboolean m_notification_received; ++ gchar *m_notification_summary; ++ gchar *m_notification_body; ++ + /* window name changes */ + char* m_window_title; + char* m_window_title_changed; +diff --git a/src/vteseq-list.hh b/src/vteseq-list.hh +index daba388b664e..a9ec61ed30aa 100644 +--- a/src/vteseq-list.hh ++++ b/src/vteseq-list.hh +@@ -124,6 +124,7 @@ SEQUENCE_HANDLER(select_character_protection) + SEQUENCE_HANDLER(select_locator_events) + SEQUENCE_HANDLER(selective_erase_in_display) + SEQUENCE_HANDLER(selective_erase_in_line) ++SEQUENCE_HANDLER(send_notification) + SEQUENCE_HANDLER(send_primary_device_attributes) + SEQUENCE_HANDLER(send_secondary_device_attributes) + SEQUENCE_HANDLER(send_tertiary_device_attributes) +diff --git a/src/vteseq.cc b/src/vteseq.cc +index 99b8bb37e770..c7e22d0ff711 100644 +--- a/src/vteseq.cc ++++ b/src/vteseq.cc +@@ -2202,6 +2202,98 @@ VteTerminalPrivate::seq_return_terminal_id(vte::parser::Params const& params) + seq_send_primary_device_attributes(params); + } + ++void ++VteTerminalPrivate::seq_send_notification (vte::parser::Params const& params) ++{ ++ GValue *value; ++ const char *end; ++ char *option = NULL; ++ char *str = NULL; ++ char *p, *validated; ++ ++ g_clear_pointer (&m_notification_summary, g_free); ++ g_clear_pointer (&m_notification_body, g_free); ++ ++ value = params.value_at_unchecked (0); ++ if (value == NULL) { ++ goto out; ++ } ++ ++ if (G_VALUE_HOLDS_STRING (value)) { ++ option = g_value_dup_string (value); ++ } else if (G_VALUE_HOLDS_POINTER (value)) { ++ option = params.ucs4_to_utf8 ((gunichar const*)g_value_get_pointer (value)); ++ } else { ++ goto out; ++ } ++ ++ if (g_strcmp0 (option, "notify") != 0) { ++ goto out; ++ } ++ ++ value = params.value_at_unchecked (1); ++ if (value == NULL) { ++ goto out; ++ } ++ ++ if (G_VALUE_HOLDS_STRING (value)) { ++ str = g_value_dup_string (value); ++ } else if (G_VALUE_HOLDS_POINTER (value)) { ++ str = params.ucs4_to_utf8 ((gunichar const*)g_value_get_pointer (value)); ++ } else { ++ goto out; ++ } ++ ++ g_utf8_validate (str, strlen (str), &end); ++ validated = g_strndup (str, end - str); ++ ++ /* No control characters allowed. */ ++ for (p = validated; *p != '\0'; p++) { ++ if ((*p & 0x1f) == *p) { ++ *p = ' '; ++ } ++ } ++ ++ m_notification_summary = validated; ++ validated = NULL; ++ g_free (str); ++ ++ m_notification_received = TRUE; ++ if (params.size () == 2) { ++ goto out; ++ } ++ ++ value = params.value_at_unchecked (2); ++ if (value == NULL) { ++ goto out; ++ } ++ ++ if (G_VALUE_HOLDS_STRING (value)) { ++ str = g_value_dup_string (value); ++ } else if (G_VALUE_HOLDS_POINTER (value)) { ++ str = params.ucs4_to_utf8 ((gunichar const*)g_value_get_pointer (value)); ++ } else { ++ goto out; ++ } ++ ++ g_utf8_validate (str, strlen (str), &end); ++ validated = g_strndup (str, end - str); ++ ++ /* No control characters allowed. */ ++ for (p = validated; *p != '\0'; p++) { ++ if ((*p & 0x1f) == *p) { ++ *p = ' '; ++ } ++ } ++ ++ m_notification_body = validated; ++ validated = NULL; ++ g_free (str); ++ ++ out: ++ g_free (option); ++} ++ + /* Send secondary device attributes. */ + void + VteTerminalPrivate::seq_send_secondary_device_attributes(vte::parser::Params const& params) +-- +2.25.4 + + +From 3cffdc9124347637228a1322c6f81f6f9ca5740f Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 29 Jan 2015 13:09:17 +0100 +Subject: [PATCH 2/5] vte.sh: Emit OSC 777 from PROMPT_COMMAND + +https://bugzilla.gnome.org/show_bug.cgi?id=711059 +--- + src/vte.sh | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/src/vte.sh b/src/vte.sh +index 2d211caa2f17..1c0543bd9d26 100644 +--- a/src/vte.sh ++++ b/src/vte.sh +@@ -50,9 +50,11 @@ __vte_osc7 () { + } + + __vte_prompt_command() { ++ local command=$(HISTTIMEFORMAT= history 1 | sed 's/^ *[0-9]\+ *//') ++ command="${command//;/ }" + local pwd='~' + [ "$PWD" != "$HOME" ] && pwd=${PWD/#$HOME\//\~\/} +- printf "\033]0;%s@%s:%s\007%s" "${USER}" "${HOSTNAME%%.*}" "${pwd}" "$(__vte_osc7)" ++ printf "\033]777;notify;Command completed;%s\007\033]0;%s@%s:%s\007%s" "${command}" "${USER}" "${HOSTNAME%%.*}" "${pwd}" "$(__vte_osc7)" + } + + case "$TERM" in +-- +2.25.4 + + +From b67b10f61a98de4557b8b3184875494c6610c1cf Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Thu, 22 Jan 2015 16:37:10 +0100 +Subject: [PATCH 3/5] Test the notification-received signal + +--- + bindings/vala/app.vala | 7 +++++++ + src/app/app.cc | 10 ++++++++++ + 2 files changed, 17 insertions(+) + +diff --git a/bindings/vala/app.vala b/bindings/vala/app.vala +index 8663d63c5445..4c5d9a2b3bad 100644 +--- a/bindings/vala/app.vala ++++ b/bindings/vala/app.vala +@@ -309,6 +309,8 @@ class Window : Gtk.ApplicationWindow + if (App.Options.object_notifications) + terminal.notify.connect(notify_cb); + ++ terminal.notification_received.connect(notification_received_cb); ++ + /* Settings */ + if (App.Options.no_double_buffer) + terminal.set_double_buffered(false); +@@ -780,6 +782,11 @@ class Window : Gtk.ApplicationWindow + set_title(terminal.get_window_title()); + } + ++ private void notification_received_cb(Vte.Terminal terminal, string summary, string? body) ++ { ++ print ("[%s]: %s\n", summary, body); ++ } ++ + } /* class Window */ + + class App : Gtk.Application +diff --git a/src/app/app.cc b/src/app/app.cc +index d4240640fc82..a581c60a839e 100644 +--- a/src/app/app.cc ++++ b/src/app/app.cc +@@ -1588,6 +1588,14 @@ window_window_title_changed_cb(VteTerminal* terminal, + vte_terminal_get_window_title(window->terminal)); + } + ++static void ++notification_received_cb(VteTerminal *terminal, ++ const gchar *summary, ++ const gchar *body) ++{ ++ g_print("[%s]: %s\n", summary, body); ++} ++ + static void + window_lower_window_cb(VteTerminal* terminal, + VteappWindow* window) +@@ -1815,6 +1823,8 @@ vteapp_window_constructed(GObject *object) + if (options.object_notifications) + g_signal_connect(window->terminal, "notify", G_CALLBACK(window_notify_cb), window); + ++ g_signal_connect(window->terminal, "notification-received", G_CALLBACK(notification_received_cb), NULL); ++ + /* Settings */ + if (options.no_double_buffer) + gtk_widget_set_double_buffered(GTK_WIDGET(window->terminal), false); +-- +2.25.4 + + +From f492bcc202a70f36443b2e34bbc0da41357d479e Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Fri, 13 May 2016 17:53:54 +0200 +Subject: [PATCH 4/5] Add a property to configure the scroll speed + +By default, it is set to zero which gives the current behaviour of +moving the buffer by a function of the number of visible rows. + +https://bugzilla.redhat.com/show_bug.cgi?id=1103380 +--- + doc/reference/vte-sections.txt | 1 + + src/vte.cc | 19 +++++++++++++- + src/vte/vteterminal.h | 4 +++ + src/vtegtk.cc | 45 ++++++++++++++++++++++++++++++++++ + src/vtegtk.hh | 1 + + src/vteinternal.hh | 2 ++ + 6 files changed, 71 insertions(+), 1 deletion(-) + +diff --git a/doc/reference/vte-sections.txt b/doc/reference/vte-sections.txt +index 6e37f0bad223..025986ee2146 100644 +--- a/doc/reference/vte-sections.txt ++++ b/doc/reference/vte-sections.txt +@@ -55,6 +55,7 @@ vte_terminal_get_cursor_blink_mode + vte_terminal_set_cursor_blink_mode + vte_terminal_get_text_blink_mode + vte_terminal_set_text_blink_mode ++vte_terminal_set_scroll_speed + vte_terminal_set_scrollback_lines + vte_terminal_get_scrollback_lines + vte_terminal_set_font +diff --git a/src/vte.cc b/src/vte.cc +index 7b036a49eec7..b4b47becc710 100644 +--- a/src/vte.cc ++++ b/src/vte.cc +@@ -10142,6 +10142,7 @@ void + VteTerminalPrivate::widget_scroll(GdkEventScroll *event) + { + gdouble delta_x, delta_y; ++ gdouble scroll_speed; + gdouble v; + gint cnt, i; + int button; +@@ -10195,7 +10196,13 @@ VteTerminalPrivate::widget_scroll(GdkEventScroll *event) + return; + } + +- v = MAX (1., ceil (gtk_adjustment_get_page_increment (m_vadjustment) / 10.)); ++ if (m_scroll_speed == 0) { ++ scroll_speed = ceil (gtk_adjustment_get_page_increment (m_vadjustment) / 10.); ++ } else { ++ scroll_speed = m_scroll_speed; ++ } ++ ++ v = MAX (1., scroll_speed); + _vte_debug_print(VTE_DEBUG_EVENTS, + "Scroll speed is %d lines per non-smooth scroll unit\n", + (int) v); +@@ -10456,6 +10463,16 @@ VteTerminalPrivate::decscusr_cursor_shape() + } + } + ++bool ++VteTerminalPrivate::set_scroll_speed(unsigned int scroll_speed) ++{ ++ if (scroll_speed == m_scroll_speed) ++ return false; ++ ++ m_scroll_speed = scroll_speed; ++ return true; ++} ++ + bool + VteTerminalPrivate::set_scrollback_lines(long lines) + { +diff --git a/src/vte/vteterminal.h b/src/vte/vteterminal.h +index f288f9e0f49a..7d09c761aded 100644 +--- a/src/vte/vteterminal.h ++++ b/src/vte/vteterminal.h +@@ -296,6 +296,10 @@ void vte_terminal_set_cursor_shape(VteTerminal *terminal, + _VTE_PUBLIC + VteCursorShape vte_terminal_get_cursor_shape(VteTerminal *terminal) _VTE_GNUC_NONNULL(1); + ++_VTE_PUBLIC ++void vte_terminal_set_scroll_speed(VteTerminal *terminal, ++ guint scroll_speed) _VTE_GNUC_NONNULL(1); ++ + /* Set the number of scrollback lines, above or at an internal minimum. */ + _VTE_PUBLIC + void vte_terminal_set_scrollback_lines(VteTerminal *terminal, +diff --git a/src/vtegtk.cc b/src/vtegtk.cc +index d3f4eaccf1d6..b07eb678e9f7 100644 +--- a/src/vtegtk.cc ++++ b/src/vtegtk.cc +@@ -483,6 +483,9 @@ vte_terminal_get_property (GObject *object, + case PROP_REWRAP_ON_RESIZE: + g_value_set_boolean (value, vte_terminal_get_rewrap_on_resize (terminal)); + break; ++ case PROP_SCROLL_SPEED: ++ g_value_set_uint (value, impl->m_scroll_speed); ++ break; + case PROP_SCROLLBACK_LINES: + g_value_set_uint (value, vte_terminal_get_scrollback_lines(terminal)); + break; +@@ -584,6 +587,9 @@ vte_terminal_set_property (GObject *object, + case PROP_REWRAP_ON_RESIZE: + vte_terminal_set_rewrap_on_resize (terminal, g_value_get_boolean (value)); + break; ++ case PROP_SCROLL_SPEED: ++ vte_terminal_set_scroll_speed (terminal, g_value_get_uint (value)); ++ break; + case PROP_SCROLLBACK_LINES: + vte_terminal_set_scrollback_lines (terminal, g_value_get_uint (value)); + break; +@@ -1531,6 +1537,21 @@ vte_terminal_class_init(VteTerminalClass *klass) + TRUE, + (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY)); + ++ /** ++ * VteTerminal:scroll-speed: ++ * ++ * The number of lines by which the buffer is moved when ++ * scrolling with a mouse wheel on top of the terminal ++ * Setting it to zero will cause the buffer to be moved by an ++ * amount depending on the number of visible rows the widget ++ * can display. ++ */ ++ pspecs[PROP_SCROLL_SPEED] = ++ g_param_spec_uint ("scroll-speed", NULL, NULL, ++ 0, G_MAXUINT, ++ 0, ++ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY)); ++ + /** + * VteTerminal:scrollback-lines: + * +@@ -4058,6 +4079,30 @@ vte_terminal_get_row_count(VteTerminal *terminal) + return IMPL(terminal)->m_row_count; + } + ++/** ++ * vte_terminal_set_scroll_speed: ++ * @terminal: a #VteTerminal ++ * @scroll_speed: move the buffer by this number of lines while scrolling ++ * ++ * Sets the number of lines by which the buffer is moved when ++ * scrolling with a mouse wheel. Setting it to zero will cause the ++ * buffer to be moved by an amount depending on the number of visible ++ * rows the widget can display. ++ */ ++void ++vte_terminal_set_scroll_speed(VteTerminal *terminal, guint scroll_speed) ++{ ++ g_return_if_fail(VTE_IS_TERMINAL(terminal)); ++ ++ GObject *object = G_OBJECT(terminal); ++ g_object_freeze_notify(object); ++ ++ if (IMPL(terminal)->set_scroll_speed(scroll_speed)) ++ g_object_notify_by_pspec(object, pspecs[PROP_SCROLL_SPEED]); ++ ++ g_object_thaw_notify(object); ++} ++ + /** + * vte_terminal_set_scrollback_lines: + * @terminal: a #VteTerminal +diff --git a/src/vtegtk.hh b/src/vtegtk.hh +index 126d29326f11..b2c9edfa8246 100644 +--- a/src/vtegtk.hh ++++ b/src/vtegtk.hh +@@ -86,6 +86,7 @@ enum { + PROP_MOUSE_POINTER_AUTOHIDE, + PROP_PTY, + PROP_REWRAP_ON_RESIZE, ++ PROP_SCROLL_SPEED, + PROP_SCROLLBACK_LINES, + PROP_SCROLL_ON_KEYSTROKE, + PROP_SCROLL_ON_OUTPUT, +diff --git a/src/vteinternal.hh b/src/vteinternal.hh +index a426a8ddc562..fe46ae4d18c3 100644 +--- a/src/vteinternal.hh ++++ b/src/vteinternal.hh +@@ -515,6 +515,7 @@ public: + gboolean m_scroll_on_output; + gboolean m_scroll_on_keystroke; + gboolean m_alternate_screen_scroll; ++ guint m_scroll_speed; + vte::grid::row_t m_scrollback_lines; + + /* Restricted scrolling */ +@@ -1277,6 +1278,7 @@ public: + bool set_mouse_autohide(bool autohide); + bool set_pty(VtePty *pty); + bool set_rewrap_on_resize(bool rewrap); ++ bool set_scroll_speed(unsigned int scroll_speed); + bool set_scrollback_lines(long lines); + bool set_scroll_on_keystroke(bool scroll); + bool set_scroll_on_output(bool scroll); +-- +2.25.4 + + +From 482ff671f291d89cda1a9d1ee1c9291f4978393c Mon Sep 17 00:00:00 2001 +From: Debarshi Ray +Date: Fri, 13 May 2016 17:54:57 +0200 +Subject: [PATCH 5/5] Test the scroll-speed property + +https://bugzilla.redhat.com/show_bug.cgi?id=1103380 +--- + bindings/vala/app.vala | 4 ++++ + src/app/app.cc | 4 ++++ + 2 files changed, 8 insertions(+) + +diff --git a/bindings/vala/app.vala b/bindings/vala/app.vala +index 4c5d9a2b3bad..3b7310679239 100644 +--- a/bindings/vala/app.vala ++++ b/bindings/vala/app.vala +@@ -335,6 +335,7 @@ class Window : Gtk.ApplicationWindow + terminal.set_rewrap_on_resize(!App.Options.no_rewrap); + terminal.set_scroll_on_output(false); + terminal.set_scroll_on_keystroke(true); ++ terminal.set_scroll_speed(App.Options.scroll_speed); + terminal.set_scrollback_lines(App.Options.scrollback_lines); + + /* Style */ +@@ -856,6 +857,7 @@ class App : Gtk.Application + public static bool object_notifications = false; + public static string? output_filename = null; + public static bool reverse = false; ++ public static uint scroll_speed = 0; + public static int scrollback_lines = 512; + public static int transparency_percent = 0; + public static bool version = false; +@@ -1049,6 +1051,8 @@ class App : Gtk.Application + "Save terminal contents to file at exit", null }, + { "reverse", 0, 0, OptionArg.NONE, ref reverse, + "Reverse foreground/background colors", null }, ++ { "scroll-speed", 0, 0, OptionArg.INT, ref scroll_speed, ++ "Specify the scroll speed", null }, + { "scrollback-lines", 'n', 0, OptionArg.INT, ref scrollback_lines, + "Specify the number of scrollback-lines", null }, + { "transparent", 'T', 0, OptionArg.INT, ref transparency_percent, +diff --git a/src/app/app.cc b/src/app/app.cc +index a581c60a839e..3faa2d76dd10 100644 +--- a/src/app/app.cc ++++ b/src/app/app.cc +@@ -91,6 +91,7 @@ public: + int verbosity{0}; + double cell_height_scale{1.0}; + double cell_width_scale{1.0}; ++ unsigned int scroll_speed{0}; + VteCursorBlinkMode cursor_blink_mode{VTE_CURSOR_BLINK_SYSTEM}; + VteCursorShape cursor_shape{VTE_CURSOR_SHAPE_BLOCK}; + VteTextBlinkMode text_blink_mode{VTE_TEXT_BLINK_ALWAYS}; +@@ -401,6 +402,8 @@ public: + "Save terminal contents to file at exit", nullptr }, + { "reverse", 0, 0, G_OPTION_ARG_NONE, &reverse, + "Reverse foreground/background colors", nullptr }, ++ { "scroll-speed", 0, 0, G_OPTION_ARG_INT, &scroll_speed, ++ "Specify the scroll speed", nullptr }, + { "scrollback-lines", 'n', 0, G_OPTION_ARG_INT, &scrollback_lines, + "Specify the number of scrollback-lines (-1 for infinite)", nullptr }, + { "transparent", 'T', 0, G_OPTION_ARG_INT, &transparency_percent, +@@ -1853,6 +1856,7 @@ vteapp_window_constructed(GObject *object) + vte_terminal_set_rewrap_on_resize(window->terminal, !options.no_rewrap); + vte_terminal_set_scroll_on_output(window->terminal, false); + vte_terminal_set_scroll_on_keystroke(window->terminal, true); ++ vte_terminal_set_scroll_speed(window->terminal, options.scroll_speed); + vte_terminal_set_scrollback_lines(window->terminal, options.scrollback_lines); + vte_terminal_set_text_blink_mode(window->terminal, options.text_blink_mode); + +-- +2.25.4 + diff --git a/SPECS/vte291.spec b/SPECS/vte291.spec new file mode 100644 index 0000000..98a9881 --- /dev/null +++ b/SPECS/vte291.spec @@ -0,0 +1,300 @@ +%global apiver 2.91 + +Name: vte291 +Version: 0.52.4 +Release: 2%{?dist} +Summary: Terminal emulator library + +License: LGPLv2+ +URL: http://www.gnome.org/ +Source0: http://download.gnome.org/sources/vte/0.52/vte-%{version}.tar.xz + +Patch0: vte291-build-add-no-exceptions-sanity-check.patch + +# https://bugzilla.gnome.org/show_bug.cgi?id=711059 +# https://bugzilla.redhat.com/show_bug.cgi?id=1103380 +Patch100: vte291-command-notify-scroll-speed.patch + +BuildRequires: gettext +BuildRequires: pkgconfig(gnutls) +BuildRequires: gobject-introspection-devel +BuildRequires: gperf +BuildRequires: pkgconfig(gtk+-3.0) +BuildRequires: pkgconfig(libpcre2-8) +BuildRequires: intltool +BuildRequires: vala + +Requires: vte-profile + +Conflicts: gnome-terminal < 3.20.1-2 + +%description +VTE is a library implementing a terminal emulator widget for GTK+. VTE +is mainly used in gnome-terminal, but can also be used to embed a +console/terminal in games, editors, IDEs, etc. + +%package devel +Summary: Development files for %{name} +Requires: %{name}%{?_isa} = %{version}-%{release} + +%description devel +The %{name}-devel package contains libraries and header files for +developing applications that use %{name}. + +# vte-profile is deliberately not noarch to avoid having to obsolete a noarch +# subpackage in the future when we get rid of the vte3 / vte291 split. Yum is +# notoriously bad when handling noarch obsoletes and insists on installing both +# of the multilib packages (i686 + x86_64) as the replacement. +%package -n vte-profile +Summary: Profile script for VTE terminal emulator library +License: GPLv3+ +# vte.sh was previously part of the vte3 package +Conflicts: vte3 < 0.36.1-3 + +%description -n vte-profile +The vte-profile package contains a profile.d script for the VTE terminal +emulator library. + +%prep +%setup -q -n vte-%{version} +%patch0 -p1 -b .add-no-exceptions-sanity-check +%patch100 -p1 -b .command-notify-scroll-speed + +%build +# Avoid overriding vte's own -fno-exceptions +# https://gitlab.gnome.org/GNOME/gnome-build-meta/issues/207 +%global optflags %(echo %{optflags} | sed 's/-fexceptions //') + +CFLAGS="%optflags -fPIE -DPIE -Wno-nonnull" \ +CXXFLAGS="$CFLAGS" \ +LDFLAGS="$LDFLAGS -Wl,-z,relro -Wl,-z,now -pie" \ +%configure \ + --disable-static \ + --libexecdir=%{_libdir}/vte-%{apiver} \ + --disable-gtk-doc \ + --enable-introspection +make %{?_smp_mflags} V=1 + +%install +%make_install + +rm -f $RPM_BUILD_ROOT%{_libdir}/*.la + +%find_lang vte-%{apiver} + +%files -f vte-%{apiver}.lang +%license COPYING +%doc NEWS README +%{_libdir}/libvte-%{apiver}.so.0* +%{_libdir}/girepository-1.0/ + +%files devel +%{_bindir}/vte-%{apiver} +%{_includedir}/vte-%{apiver}/ +%{_libdir}/libvte-%{apiver}.so +%{_libdir}/pkgconfig/vte-%{apiver}.pc +%{_datadir}/gir-1.0/ +%doc %{_datadir}/gtk-doc/ +%{_datadir}/vala/ + +%files -n vte-profile +%{_sysconfdir}/profile.d/vte.sh + +%changelog +* Mon Jun 01 2020 Debarshi Ray - 0.52.4-2 +- Avoid overriding -fno-exceptions +Resolves: #1804719 + +* Mon Jun 01 2020 Debarshi Ray - 0.52.4-1 +- Update to 0.52.4 +Resolves: #1804719 + +* Mon Oct 08 2018 Debarshi Ray - 0.52.2-2 +- Removal of utmp logging makes the utmp group unnecessary +Resolves: #1610293 + +* Mon May 21 2018 Kalev Lember - 0.52.2-1 +- Update to 0.52.2 + +* Mon Apr 09 2018 Kalev Lember - 0.52.1-1 +- Update to 0.52.1 + +* Tue Apr 03 2018 Kalev Lember - 0.52.0-1 +- Update to 0.52.0 +- Remove ldconfig scriptlets + +* Wed Mar 28 2018 Debarshi Ray - 0.51.90-1 +- Update to 0.51.90 + +* Wed Mar 28 2018 Debarshi Ray - 0.51.3-1 +- Update to 0.51.3 +- Rebase downstream patches + +* Thu Feb 08 2018 Igor Gnatenko - 0.50.2-3 +- Switch to %%ldconfig_scriptlets + +* Thu Nov 02 2017 Kalev Lember - 0.50.2-2 +- Rebuild + +* Wed Nov 01 2017 Debarshi Ray - 0.50.2-1 +- Update to 0.50.2 + +* Thu Oct 05 2017 Debarshi Ray - 0.50.1-1 +- Update to 0.50.1 +- Rebase downstream patches + +* Thu Sep 14 2017 Kalev Lember - 0.50.0-1 +- Update to 0.50.0 +- Rebase downstream patches + +* Thu Aug 03 2017 Fedora Release Engineering - 0.48.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 0.48.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Wed May 10 2017 Kalev Lember - 0.48.3-1 +- Update to 0.48.3 + +* Wed Apr 12 2017 Kalev Lember - 0.48.2-1 +- Update to 0.48.2 +- Rebase downstream patches + +* Wed Mar 22 2017 Kalev Lember - 0.48.1-1 +- Update to 0.48.1 + +* Fri Feb 24 2017 Debarshi Ray - 0.47.90-1 +- Update to 0.47.90 +- Rebase downstream patches + +* Sat Feb 11 2017 Fedora Release Engineering - 0.46.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Nov 08 2016 Debarshi Ray - 0.46.1-1 +- Update to 0.46.1 +- Rebase downstream patches + +* Thu Sep 22 2016 Kalev Lember - 0.46.0-2 +- BR vala instead of obsolete vala-tools subpackage + +* Mon Sep 19 2016 Kalev Lember - 0.46.0-1 +- Update to 0.46.0 + +* Wed Sep 14 2016 Kalev Lember - 0.45.92-1 +- Update to 0.45.92 + +* Thu Aug 18 2016 Kalev Lember - 0.45.90-1 +- Update to 0.45.90 +- Rebase downstream patches + +* Fri Jul 01 2016 Debarshi Ray - 0.44.2-2 +- Add a property to configure the scroll speed + +* Tue May 10 2016 Debarshi Ray - 0.44.2-1 +- Update to 0.44.2 +- Rebase downstream patches and undo unintentional ABI break + +* Mon Apr 11 2016 Debarshi Ray - 0.44.1-1 +- Update to 0.44.1 + +* Tue Mar 22 2016 Kalev Lember - 0.44.0-1 +- Update to 0.44.0 + +* Tue Mar 15 2016 Debarshi Ray - 0.43.92-1 +- Update to 0.43.92 + +* Tue Mar 01 2016 Debarshi Ray - 0.43.91-1 +- Update to 0.43.91 +- Remove BuildRequires on pkgconfig(libpcre2-8) + +* Tue Mar 01 2016 Debarshi Ray - 0.43.90-1 +- Update to 0.43.90 + +* Fri Feb 05 2016 Fedora Release Engineering - 0.43.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Fri Jan 29 2016 Debarshi Ray - 0.43.2-1 +- Update to 0.43.2 + +* Fri Jan 29 2016 Debarshi Ray - 0.43.1-1 +- Update to 0.43.1 +- Drop upstreamed patch + +* Fri Jan 29 2016 Debarshi Ray - 0.43.0-1 +- Update to 0.43.0 +- Add BuildRequires on pkgconfig(libpcre2-8) +- Disable -Wnonnull + +* Thu Jan 28 2016 Debarshi Ray - 0.42.3-1 +- Update to 0.42.3 +- Backport upstream patch to fix disappearing lines (GNOME #761097) + +* Wed Oct 14 2015 Kalev Lember - 0.42.1-1 +- Update to 0.42.1 + +* Tue Sep 22 2015 Kalev Lember - 0.42.0-1 +- Update to 0.42.0 +- Use license macro for COPYING + +* Mon Sep 14 2015 Debarshi Ray - 0.41.90-1 +- Update to 0.41.90 +- Rebased downstream patches after the migration to C++ +- gnome-pty-helper has been removed + +* Fri Jun 19 2015 Fedora Release Engineering - 0.40.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Tue May 12 2015 Debarshi Ray - 0.40.2-1 +- Update to 0.40.2 + +* Tue Mar 24 2015 Debarshi Ray - 0.40.0-1 +- Update to 0.40.0 + +* Thu Mar 19 2015 Debarshi Ray - 0.39.92-1 +- Update to 0.39.92 + +* Tue Feb 17 2015 Debarshi Ray - 0.39.90-1 +- Update to 0.39.90 +- Add command-notify patches + +* Fri Dec 19 2014 Richard Hughes - 0.39.1-1 +- Update to 0.39.1 + +* Mon Dec 01 2014 Debarshi Ray - 0.39.0-2 +- Backport upstream patch to fix zombie shells (GNOME #740929) + +* Tue Nov 25 2014 Kalev Lember - 0.39.0-1 +- Update to 0.39.0 + +* Mon Nov 10 2014 Kalev Lember - 0.38.2-1 +- Update to 0.38.2 + +* Mon Oct 13 2014 Kalev Lember - 0.38.1-1 +- Update to 0.38.1 + +* Sun Sep 14 2014 Kalev Lember - 0.38.0-1 +- Update to 0.38.0 + +* Mon Aug 18 2014 Kalev Lember - 0.37.90-1 +- Update to 0.37.90 + +* Mon Aug 18 2014 Fedora Release Engineering - 0.37.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Tue Jul 22 2014 Kalev Lember - 0.37.2-2 +- Rebuilt for gobject-introspection 1.41.4 + +* Tue Jun 24 2014 Richard Hughes - 0.37.2-1 +- Update to 0.37.2 + +* Sun Jun 08 2014 Fedora Release Engineering - 0.37.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 28 2014 Kalev Lember - 0.37.1-1 +- Update to 0.37.1 + +* Wed May 07 2014 Kalev Lember - 0.37.0-2 +- Split out a vte-profile subpackage that can be used with both vte291 / vte3 + +* Tue May 06 2014 Kalev Lember - 0.37.0-1 +- Initial Fedora package, based on previous vte3 0.36 packaging