From 0e0ebd29cb16781f86ad22032a612fb1bd1f5fac Mon Sep 17 00:00:00 2001 From: artoo Date: Sat, 10 Aug 2019 01:14:41 +0200 Subject: [PATCH] git subrepo clone gitea@gitea.artixlinux.org:packagesV/vte.git subrepo: subdir: "vte" merged: "f31ada1" upstream: origin: "gitea@gitea.artixlinux.org:packagesV/vte.git" branch: "master" commit: "f31ada1" git-subrepo: version: "0.4.0" origin: "???" commit: "???" --- vte/.artixlinux/agent.yaml | 5 ++ vte/.gitignore | 33 ++++++++ vte/.gitrepo | 12 +++ vte/Jenkinsfile | 3 + vte/README.md | 2 + vte/repos/extra-x86_64/PKGBUILD | 46 ++++++++++ .../bracketed_paste_mode_fix.patch | 83 +++++++++++++++++++ vte/repos/extra-x86_64/make_alt_work.patch | 50 +++++++++++ vte/repos/extra-x86_64/scroll_region.patch | 67 +++++++++++++++ vte/trunk/PKGBUILD | 46 ++++++++++ vte/trunk/bracketed_paste_mode_fix.patch | 83 +++++++++++++++++++ vte/trunk/make_alt_work.patch | 50 +++++++++++ vte/trunk/scroll_region.patch | 67 +++++++++++++++ 13 files changed, 547 insertions(+) create mode 100644 vte/.artixlinux/agent.yaml create mode 100644 vte/.gitignore create mode 100644 vte/.gitrepo create mode 100644 vte/Jenkinsfile create mode 100644 vte/README.md create mode 100644 vte/repos/extra-x86_64/PKGBUILD create mode 100644 vte/repos/extra-x86_64/bracketed_paste_mode_fix.patch create mode 100644 vte/repos/extra-x86_64/make_alt_work.patch create mode 100644 vte/repos/extra-x86_64/scroll_region.patch create mode 100644 vte/trunk/PKGBUILD create mode 100644 vte/trunk/bracketed_paste_mode_fix.patch create mode 100644 vte/trunk/make_alt_work.patch create mode 100644 vte/trunk/scroll_region.patch diff --git a/vte/.artixlinux/agent.yaml b/vte/.artixlinux/agent.yaml new file mode 100644 index 0000000..d7d8656 --- /dev/null +++ b/vte/.artixlinux/agent.yaml @@ -0,0 +1,5 @@ +%YAML 1.2 +--- + +label: master + diff --git a/vte/.gitignore b/vte/.gitignore new file mode 100644 index 0000000..6101d41 --- /dev/null +++ b/vte/.gitignore @@ -0,0 +1,33 @@ +# ---> ArchLinuxPackages +*.tar +*.tar.* +*.jar +*.exe +*.msi +*.zip +*.tgz +*.log +*.log.* +*.sig + +pkg/ +src/ + + +# ---> Archives +*.7z +*.rar +*.gz +*.bzip +*.bz2 +*.xz +*.lzma +*.cab + +# ---> systemd +*.service +*.socket +*.timer + +# ---> snap +*.snap diff --git a/vte/.gitrepo b/vte/.gitrepo new file mode 100644 index 0000000..c4d4e29 --- /dev/null +++ b/vte/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = gitea@gitea.artixlinux.org:packagesV/vte.git + branch = master + commit = f31ada163d4dfbecff3e8d16346fec5754397222 + parent = db0d8a994bb5014a976b5e024079e2b6df0bf757 + method = merge + cmdver = 0.4.0 diff --git a/vte/Jenkinsfile b/vte/Jenkinsfile new file mode 100644 index 0000000..8d983a7 --- /dev/null +++ b/vte/Jenkinsfile @@ -0,0 +1,3 @@ +@Library('artix-ci') import org.artixlinux.RepoPackage + +PackagePipeline(new RepoPackage(this)) diff --git a/vte/README.md b/vte/README.md new file mode 100644 index 0000000..cf31182 --- /dev/null +++ b/vte/README.md @@ -0,0 +1,2 @@ +# vte + diff --git a/vte/repos/extra-x86_64/PKGBUILD b/vte/repos/extra-x86_64/PKGBUILD new file mode 100644 index 0000000..7561712 --- /dev/null +++ b/vte/repos/extra-x86_64/PKGBUILD @@ -0,0 +1,46 @@ +# $Id$ +# Maintainer: Jan de Groot + +pkgname=vte +pkgver=0.28.2 +pkgrel=8 +pkgdesc="Virtual Terminal Emulator widget for use with GTK2" +arch=('i686' 'x86_64') +license=('LGPL') +options=('!emptydirs') +depends=('gtk2' 'vte-common') +makedepends=('pygtk' 'intltool' 'gobject-introspection' 'pygobject2-devel') +url="http://www.gnome.org" +source=(http://ftp.gnome.org/pub/GNOME/sources/vte/0.28/vte-$pkgver.tar.xz + make_alt_work.patch + scroll_region.patch + bracketed_paste_mode_fix.patch) +sha256sums=('86cf0b81aa023fa93ed415653d51c96767f20b2d7334c893caba71e42654b0ae' + '2cd58ffffd42a9d59e05369c2efa1e70b7d32bfb5c8cdbd67b3b95ae3c3e6d61' + '9a99c486b1c0377a4b8c6fae25067c68913bded2988fafea2c86f5adf6a49c81' + '634d4526efdff9fac0e75cb056afb0a886354cd52c5dc98f5a70bef282631724') + +prepare() { + cd $pkgname-$pkgver + patch -Np1 -i ../make_alt_work.patch + patch -Np1 -i ../scroll_region.patch + patch -Np1 -i ../bracketed_paste_mode_fix.patch + rm -r doc/reference/html +} +build() { + cd $pkgname-$pkgver + #warning: type-punning to incomplete type might break strict-aliasing rules + export CFLAGS="$CFLAGS -fno-strict-aliasing" + + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/vte \ + --localstatedir=/var --disable-static \ + --enable-introspection --with-gtk=2.0 --disable-gnome-pty-helper + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make +} + +package(){ + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} diff --git a/vte/repos/extra-x86_64/bracketed_paste_mode_fix.patch b/vte/repos/extra-x86_64/bracketed_paste_mode_fix.patch new file mode 100644 index 0000000..c41ca6f --- /dev/null +++ b/vte/repos/extra-x86_64/bracketed_paste_mode_fix.patch @@ -0,0 +1,83 @@ +commit 7206376160aac2743a93f70a4726bad4f34fa688 +Author: Fuujuhi +Date: Wed Jul 30 15:52:52 2014 +0200 + + backporting vte bracked paste mode bug patch on v0.28.2-5ubuntu1 + + See https://bugzilla.gnome.org/show_bug.cgi?id=729533 + Patch at https://bugzilla.gnome.org/attachment.cgi?id=279320 + +diff --git a/src/vte-private.h b/src/vte-private.h +index 65d5022..ac1f2d8 100644 +--- a/src/vte-private.h ++++ b/src/vte-private.h +@@ -219,7 +219,6 @@ struct _VteTerminalPrivate { + gboolean sendrecv_mode; /* sendrecv mode */ + gboolean insert_mode; /* insert mode */ + gboolean linefeed_mode; /* linefeed mode */ +- gboolean bracketed_paste_mode; + struct vte_scrolling_region { + int start, end; + } scrolling_region; /* the region we scroll in */ +@@ -274,6 +273,7 @@ struct _VteTerminalPrivate { + gboolean text_modified_flag; + gboolean text_inserted_flag; + gboolean text_deleted_flag; ++ gboolean bracketed_paste_mode; + + /* Scrolling options. */ + gboolean scroll_background; +diff --git a/src/vte.c b/src/vte.c +index c20ee78..dbab6de 100644 +--- a/src/vte.c ++++ b/src/vte.c +@@ -5823,10 +5823,10 @@ static void mark_output_source_invalid(VteTerminal *terminal) + p++; + } + } +- if (terminal->pvt->screen->bracketed_paste_mode) ++ if (terminal->pvt->bracketed_paste_mode) + vte_terminal_feed_child(terminal, "\e[200~", -1); + vte_terminal_feed_child(terminal, paste, length); +- if (terminal->pvt->screen->bracketed_paste_mode) ++ if (terminal->pvt->bracketed_paste_mode) + vte_terminal_feed_child(terminal, "\e[201~", -1); + g_free(paste); + } +@@ -14106,14 +14106,12 @@ static void mark_output_source_invalid(VteTerminal *terminal) + pvt->normal_screen.linefeed_mode = FALSE; + pvt->normal_screen.origin_mode = FALSE; + pvt->normal_screen.reverse_mode = FALSE; +- pvt->normal_screen.bracketed_paste_mode = FALSE; + pvt->alternate_screen.scrolling_restricted = FALSE; + pvt->alternate_screen.sendrecv_mode = TRUE; + pvt->alternate_screen.insert_mode = FALSE; + pvt->alternate_screen.linefeed_mode = FALSE; + pvt->alternate_screen.origin_mode = FALSE; + pvt->alternate_screen.reverse_mode = FALSE; +- pvt->alternate_screen.bracketed_paste_mode = FALSE; + pvt->cursor_visible = TRUE; + /* Reset the encoding. */ + vte_terminal_set_encoding(terminal, NULL); +@@ -14143,6 +14141,8 @@ static void mark_output_source_invalid(VteTerminal *terminal) + pvt->mouse_last_y = 0; + /* Clear modifiers. */ + pvt->modifiers = 0; ++ /* Reset miscellaneous stuff. */ ++ pvt->bracketed_paste_mode = FALSE; + /* Cause everything to be redrawn (or cleared). */ + vte_terminal_maybe_scroll_to_bottom(terminal); + _vte_invalidate_all(terminal); +diff --git a/src/vteseq.c b/src/vteseq.c +index 209522f..8c8d43c 100644 +--- a/src/vteseq.c ++++ b/src/vteseq.c +@@ -737,7 +737,7 @@ + GINT_TO_POINTER(TRUE), + NULL, NULL}, + /* 2004: Bracketed paste mode. */ +- {2004, &terminal->pvt->screen->bracketed_paste_mode, NULL, NULL, ++ {2004, &terminal->pvt->bracketed_paste_mode, NULL, NULL, + GINT_TO_POINTER(FALSE), + GINT_TO_POINTER(TRUE), + NULL, NULL,}, diff --git a/vte/repos/extra-x86_64/make_alt_work.patch b/vte/repos/extra-x86_64/make_alt_work.patch new file mode 100644 index 0000000..65c3ddf --- /dev/null +++ b/vte/repos/extra-x86_64/make_alt_work.patch @@ -0,0 +1,50 @@ +From a9d6a34708f846952f423d078397352858f7b1a4 Mon Sep 17 00:00:00 2001 +From: Christian Persch +Date: Sat, 12 May 2012 18:48:05 +0200 +Subject: [PATCH] keymap: Treat ALT as META + +https://bugzilla.gnome.org/show_bug.cgi?id=663779 +--- + src/vte.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/src/vte.c b/src/vte.c +index dd27e9a..0657921 100644 +--- a/src/vte.c ++++ b/src/vte.c +@@ -5170,19 +5170,24 @@ static void + vte_terminal_read_modifiers (VteTerminal *terminal, + GdkEvent *event) + { ++ GdkKeymap *keymap; + GdkModifierType modifiers; + + /* Read the modifiers. */ +- if (gdk_event_get_state((GdkEvent*)event, &modifiers)) { +- GdkKeymap *keymap; +-#if GTK_CHECK_VERSION (2, 90, 8) +- keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); +-#else +- keymap = gdk_keymap_get_for_display(gdk_drawable_get_display(((GdkEventAny*)event)->window)); ++ if (!gdk_event_get_state((GdkEvent*)event, &modifiers)) ++ return; ++ ++ keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); ++ ++ gdk_keymap_add_virtual_modifiers (keymap, &modifiers); ++ ++#if 1 ++ /* HACK! Treat ALT as META; see bug #663779. */ ++ if (modifiers & GDK_MOD1_MASK) ++ modifiers |= VTE_META_MASK; + #endif +- gdk_keymap_add_virtual_modifiers (keymap, &modifiers); +- terminal->pvt->modifiers = modifiers; +- } ++ ++ terminal->pvt->modifiers = modifiers; + } + + /* Read and handle a keypress event. */ +-- +1.7.5.1.217.g4e3aa.dirty \ No newline at end of file diff --git a/vte/repos/extra-x86_64/scroll_region.patch b/vte/repos/extra-x86_64/scroll_region.patch new file mode 100644 index 0000000..9e3e83b --- /dev/null +++ b/vte/repos/extra-x86_64/scroll_region.patch @@ -0,0 +1,67 @@ +Index: vte-0.26.0/src/vte.c +=================================================================== +--- vte-0.26.0.orig/src/vte.c 2010-11-30 23:04:53.000000000 -0800 ++++ vte-0.26.0/src/vte.c 2010-12-07 20:05:07.865548000 -0800 +@@ -3862,6 +3862,7 @@ vte_terminal_process_incoming(VteTermina + long wcount, start, delta; + gboolean leftovers, modified, bottom, again; + gboolean invalidated_text; ++ gboolean in_scroll_region; + GArray *unichars; + struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL; + +@@ -3881,6 +3882,10 @@ vte_terminal_process_incoming(VteTermina + cursor = screen->cursor_current; + cursor_visible = terminal->pvt->cursor_visible; + ++ in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ + /* We should only be called when there's data to process. */ + g_assert(terminal->pvt->incoming || + (terminal->pvt->pending->len > 0)); +@@ -3979,6 +3984,8 @@ skip_chunk: + * points to the first character which isn't part of this + * sequence. */ + if ((match != NULL) && (match[0] != '\0')) { ++ gboolean new_in_scroll_region; ++ + /* Call the right sequence handler for the requested + * behavior. */ + _vte_terminal_handle_sequence(terminal, +@@ -3989,12 +3996,20 @@ skip_chunk: + start = (next - wbuf); + modified = TRUE; + +- /* if we have moved during the sequence handler, restart the bbox */ ++ new_in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ ++ delta = screen->scroll_delta; /* delta may have changed from sequence. */ ++ ++ /* if we have moved greatly during the sequence handler, or moved into a scroll_region ++ * from outside it, restart the bbox */ + if (invalidated_text && +- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) { ++ ((new_in_scroll_region && !in_scroll_region) || ++ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) { + /* Clip off any part of the box which isn't already on-screen. */ + bbox_topleft.x = MAX(bbox_topleft.x, 0); + bbox_topleft.y = MAX(bbox_topleft.y, delta); +@@ -4014,6 +4029,8 @@ skip_chunk: + bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT; + bbox_topleft.x = bbox_topleft.y = G_MAXINT; + } ++ ++ in_scroll_region = new_in_scroll_region; + } else + /* Second, we have a NULL match, and next points to the very + * next character in the buffer. Insert the character which diff --git a/vte/trunk/PKGBUILD b/vte/trunk/PKGBUILD new file mode 100644 index 0000000..ca6ebc9 --- /dev/null +++ b/vte/trunk/PKGBUILD @@ -0,0 +1,46 @@ +# $Id$ +# Maintainer: Jan de Groot + +pkgname=vte +pkgver=0.28.2 +pkgrel=8 +pkgdesc="Virtual Terminal Emulator widget for use with GTK2" +arch=('x86_64') +license=('LGPL') +options=('!emptydirs') +depends=('gtk2' 'vte-common') +makedepends=('pygtk' 'intltool' 'gobject-introspection' 'pygobject2-devel') +url="https://www.gnome.org" +source=(https://download.gnome.org/sources/vte/0.28/vte-$pkgver.tar.xz + make_alt_work.patch + scroll_region.patch + bracketed_paste_mode_fix.patch) +sha256sums=('86cf0b81aa023fa93ed415653d51c96767f20b2d7334c893caba71e42654b0ae' + '2cd58ffffd42a9d59e05369c2efa1e70b7d32bfb5c8cdbd67b3b95ae3c3e6d61' + '9a99c486b1c0377a4b8c6fae25067c68913bded2988fafea2c86f5adf6a49c81' + '634d4526efdff9fac0e75cb056afb0a886354cd52c5dc98f5a70bef282631724') + +prepare() { + cd $pkgname-$pkgver + patch -Np1 -i ../make_alt_work.patch + patch -Np1 -i ../scroll_region.patch + patch -Np1 -i ../bracketed_paste_mode_fix.patch + rm -r doc/reference/html +} +build() { + cd $pkgname-$pkgver + #warning: type-punning to incomplete type might break strict-aliasing rules + export CFLAGS="$CFLAGS -fno-strict-aliasing" + + PYTHON=/usr/bin/python2 ./configure --prefix=/usr --sysconfdir=/etc \ + --libexecdir=/usr/lib/vte \ + --localstatedir=/var --disable-static \ + --enable-introspection --with-gtk=2.0 --disable-gnome-pty-helper + sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0/g' libtool + make +} + +package(){ + cd $pkgname-$pkgver + make DESTDIR="$pkgdir" install +} diff --git a/vte/trunk/bracketed_paste_mode_fix.patch b/vte/trunk/bracketed_paste_mode_fix.patch new file mode 100644 index 0000000..c41ca6f --- /dev/null +++ b/vte/trunk/bracketed_paste_mode_fix.patch @@ -0,0 +1,83 @@ +commit 7206376160aac2743a93f70a4726bad4f34fa688 +Author: Fuujuhi +Date: Wed Jul 30 15:52:52 2014 +0200 + + backporting vte bracked paste mode bug patch on v0.28.2-5ubuntu1 + + See https://bugzilla.gnome.org/show_bug.cgi?id=729533 + Patch at https://bugzilla.gnome.org/attachment.cgi?id=279320 + +diff --git a/src/vte-private.h b/src/vte-private.h +index 65d5022..ac1f2d8 100644 +--- a/src/vte-private.h ++++ b/src/vte-private.h +@@ -219,7 +219,6 @@ struct _VteTerminalPrivate { + gboolean sendrecv_mode; /* sendrecv mode */ + gboolean insert_mode; /* insert mode */ + gboolean linefeed_mode; /* linefeed mode */ +- gboolean bracketed_paste_mode; + struct vte_scrolling_region { + int start, end; + } scrolling_region; /* the region we scroll in */ +@@ -274,6 +273,7 @@ struct _VteTerminalPrivate { + gboolean text_modified_flag; + gboolean text_inserted_flag; + gboolean text_deleted_flag; ++ gboolean bracketed_paste_mode; + + /* Scrolling options. */ + gboolean scroll_background; +diff --git a/src/vte.c b/src/vte.c +index c20ee78..dbab6de 100644 +--- a/src/vte.c ++++ b/src/vte.c +@@ -5823,10 +5823,10 @@ static void mark_output_source_invalid(VteTerminal *terminal) + p++; + } + } +- if (terminal->pvt->screen->bracketed_paste_mode) ++ if (terminal->pvt->bracketed_paste_mode) + vte_terminal_feed_child(terminal, "\e[200~", -1); + vte_terminal_feed_child(terminal, paste, length); +- if (terminal->pvt->screen->bracketed_paste_mode) ++ if (terminal->pvt->bracketed_paste_mode) + vte_terminal_feed_child(terminal, "\e[201~", -1); + g_free(paste); + } +@@ -14106,14 +14106,12 @@ static void mark_output_source_invalid(VteTerminal *terminal) + pvt->normal_screen.linefeed_mode = FALSE; + pvt->normal_screen.origin_mode = FALSE; + pvt->normal_screen.reverse_mode = FALSE; +- pvt->normal_screen.bracketed_paste_mode = FALSE; + pvt->alternate_screen.scrolling_restricted = FALSE; + pvt->alternate_screen.sendrecv_mode = TRUE; + pvt->alternate_screen.insert_mode = FALSE; + pvt->alternate_screen.linefeed_mode = FALSE; + pvt->alternate_screen.origin_mode = FALSE; + pvt->alternate_screen.reverse_mode = FALSE; +- pvt->alternate_screen.bracketed_paste_mode = FALSE; + pvt->cursor_visible = TRUE; + /* Reset the encoding. */ + vte_terminal_set_encoding(terminal, NULL); +@@ -14143,6 +14141,8 @@ static void mark_output_source_invalid(VteTerminal *terminal) + pvt->mouse_last_y = 0; + /* Clear modifiers. */ + pvt->modifiers = 0; ++ /* Reset miscellaneous stuff. */ ++ pvt->bracketed_paste_mode = FALSE; + /* Cause everything to be redrawn (or cleared). */ + vte_terminal_maybe_scroll_to_bottom(terminal); + _vte_invalidate_all(terminal); +diff --git a/src/vteseq.c b/src/vteseq.c +index 209522f..8c8d43c 100644 +--- a/src/vteseq.c ++++ b/src/vteseq.c +@@ -737,7 +737,7 @@ + GINT_TO_POINTER(TRUE), + NULL, NULL}, + /* 2004: Bracketed paste mode. */ +- {2004, &terminal->pvt->screen->bracketed_paste_mode, NULL, NULL, ++ {2004, &terminal->pvt->bracketed_paste_mode, NULL, NULL, + GINT_TO_POINTER(FALSE), + GINT_TO_POINTER(TRUE), + NULL, NULL,}, diff --git a/vte/trunk/make_alt_work.patch b/vte/trunk/make_alt_work.patch new file mode 100644 index 0000000..65c3ddf --- /dev/null +++ b/vte/trunk/make_alt_work.patch @@ -0,0 +1,50 @@ +From a9d6a34708f846952f423d078397352858f7b1a4 Mon Sep 17 00:00:00 2001 +From: Christian Persch +Date: Sat, 12 May 2012 18:48:05 +0200 +Subject: [PATCH] keymap: Treat ALT as META + +https://bugzilla.gnome.org/show_bug.cgi?id=663779 +--- + src/vte.c | 23 ++++++++++++++--------- + 1 files changed, 14 insertions(+), 9 deletions(-) + +diff --git a/src/vte.c b/src/vte.c +index dd27e9a..0657921 100644 +--- a/src/vte.c ++++ b/src/vte.c +@@ -5170,19 +5170,24 @@ static void + vte_terminal_read_modifiers (VteTerminal *terminal, + GdkEvent *event) + { ++ GdkKeymap *keymap; + GdkModifierType modifiers; + + /* Read the modifiers. */ +- if (gdk_event_get_state((GdkEvent*)event, &modifiers)) { +- GdkKeymap *keymap; +-#if GTK_CHECK_VERSION (2, 90, 8) +- keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); +-#else +- keymap = gdk_keymap_get_for_display(gdk_drawable_get_display(((GdkEventAny*)event)->window)); ++ if (!gdk_event_get_state((GdkEvent*)event, &modifiers)) ++ return; ++ ++ keymap = gdk_keymap_get_for_display(gdk_window_get_display(((GdkEventAny*)event)->window)); ++ ++ gdk_keymap_add_virtual_modifiers (keymap, &modifiers); ++ ++#if 1 ++ /* HACK! Treat ALT as META; see bug #663779. */ ++ if (modifiers & GDK_MOD1_MASK) ++ modifiers |= VTE_META_MASK; + #endif +- gdk_keymap_add_virtual_modifiers (keymap, &modifiers); +- terminal->pvt->modifiers = modifiers; +- } ++ ++ terminal->pvt->modifiers = modifiers; + } + + /* Read and handle a keypress event. */ +-- +1.7.5.1.217.g4e3aa.dirty \ No newline at end of file diff --git a/vte/trunk/scroll_region.patch b/vte/trunk/scroll_region.patch new file mode 100644 index 0000000..9e3e83b --- /dev/null +++ b/vte/trunk/scroll_region.patch @@ -0,0 +1,67 @@ +Index: vte-0.26.0/src/vte.c +=================================================================== +--- vte-0.26.0.orig/src/vte.c 2010-11-30 23:04:53.000000000 -0800 ++++ vte-0.26.0/src/vte.c 2010-12-07 20:05:07.865548000 -0800 +@@ -3862,6 +3862,7 @@ vte_terminal_process_incoming(VteTermina + long wcount, start, delta; + gboolean leftovers, modified, bottom, again; + gboolean invalidated_text; ++ gboolean in_scroll_region; + GArray *unichars; + struct _vte_incoming_chunk *chunk, *next_chunk, *achunk = NULL; + +@@ -3881,6 +3882,10 @@ vte_terminal_process_incoming(VteTermina + cursor = screen->cursor_current; + cursor_visible = terminal->pvt->cursor_visible; + ++ in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ + /* We should only be called when there's data to process. */ + g_assert(terminal->pvt->incoming || + (terminal->pvt->pending->len > 0)); +@@ -3979,6 +3984,8 @@ skip_chunk: + * points to the first character which isn't part of this + * sequence. */ + if ((match != NULL) && (match[0] != '\0')) { ++ gboolean new_in_scroll_region; ++ + /* Call the right sequence handler for the requested + * behavior. */ + _vte_terminal_handle_sequence(terminal, +@@ -3989,12 +3996,20 @@ skip_chunk: + start = (next - wbuf); + modified = TRUE; + +- /* if we have moved during the sequence handler, restart the bbox */ ++ new_in_scroll_region = screen->scrolling_restricted ++ && (screen->cursor_current.row >= (screen->insert_delta + screen->scrolling_region.start)) ++ && (screen->cursor_current.row <= (screen->insert_delta + screen->scrolling_region.end)); ++ ++ delta = screen->scroll_delta; /* delta may have changed from sequence. */ ++ ++ /* if we have moved greatly during the sequence handler, or moved into a scroll_region ++ * from outside it, restart the bbox */ + if (invalidated_text && +- (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || +- screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK)) { ++ ((new_in_scroll_region && !in_scroll_region) || ++ (screen->cursor_current.col > bbox_bottomright.x + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.col < bbox_topleft.x - VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row > bbox_bottomright.y + VTE_CELL_BBOX_SLACK || ++ screen->cursor_current.row < bbox_topleft.y - VTE_CELL_BBOX_SLACK))) { + /* Clip off any part of the box which isn't already on-screen. */ + bbox_topleft.x = MAX(bbox_topleft.x, 0); + bbox_topleft.y = MAX(bbox_topleft.y, delta); +@@ -4014,6 +4029,8 @@ skip_chunk: + bbox_bottomright.x = bbox_bottomright.y = -G_MAXINT; + bbox_topleft.x = bbox_topleft.y = G_MAXINT; + } ++ ++ in_scroll_region = new_in_scroll_region; + } else + /* Second, we have a NULL match, and next points to the very + * next character in the buffer. Insert the character which