summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNalin Dahyabhai <nalin@src.gnome.org>2002-08-29 20:19:51 +0000
committerNalin Dahyabhai <nalin@src.gnome.org>2002-08-29 20:19:51 +0000
commit3993c17be8839f7adda132270e8d9238d9f49b95 (patch)
tree3122cc23cdd398fdc181a752315e83e1a0b97787
parentb4069ef78a1cce43ad60dde14f7c298c85de2fb9 (diff)
downloadvte-3993c17be8839f7adda132270e8d9238d9f49b95.tar.gz
Clean up bookkeeping for mouse autoscrolling and adjustment changevte_0_8_11
* src/vte.c: Clean up bookkeeping for mouse autoscrolling and adjustment change notifications. Reset the scrolling and insertion deltas when clearing the history. * src/interpret.c: Don't dump data on incomplete conversion errors, which we're going to retry anyway. * src/iso2022.txt: Add iso-2022-kr examples (no workee -- uses GR). * src/vte.c, src/vte.h: Add vte_terminal_copy_primary and vte_terminal_paste_primary(), because I really want to let profterm decide default values for key bindings.
-rw-r--r--ChangeLog17
-rw-r--r--src/interpret.c23
-rw-r--r--src/iso2022.txt9
-rw-r--r--src/vte.c73
-rw-r--r--src/vte.h2
-rw-r--r--vte.spec6
6 files changed, 94 insertions, 36 deletions
diff --git a/ChangeLog b/ChangeLog
index d31fd256..ea6d2a86 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,14 +1,29 @@
-2002-08-28 Gustavo Noronha Silva <kov@debian.org>
+2002-08-29 nalin
+ * src/vte.c: Clean up bookkeeping for mouse autoscrolling and adjustment
+ change notifications. Reset the scrolling and insertion deltas when
+ clearing the history.
+ * src/interpret.c: Don't dump data on incomplete conversion errors,
+ which we're going to retry anyway.
+ * src/iso2022.txt: Add iso-2022-kr examples (no workee -- uses GR).
+
+2002-08-28 nalin
+ * src/vte.c, src/vte.h: Add vte_terminal_copy_primary and
+ vte_terminal_paste_primary(), because I really want to let
+ profterm decide default values for key bindings.
+2002-08-28 Gustavo Noronha Silva <kov@debian.org>
* configure.in (ALL_LINGUAS): added pt_BR
2002-08-27 nalin
* src/vte.c: Stop autoscrolling on button release.
+
2002-08-27 nalin
* src/vte.c: When autoscrolling, clamp the new boundary to what the user
can see.
+
2002-08-27 nalin
* src/vte.c: Implement autoscroll (Red Hat #70481).
+
2002-08-27 nalin
* src/vte.c: Only perform cr-lf substitutions when pasting text, not
when inputting from a live user (Red Hat #72639). Bind GDK_ISO_Left_Tab
diff --git a/src/interpret.c b/src/interpret.c
index 7fc2671d..3a476bee 100644
--- a/src/interpret.c
+++ b/src/interpret.c
@@ -117,17 +117,22 @@ main(int argc, char **argv)
"UTF-8",
NULL, &ubuflen, &error);
if (error != NULL) {
- g_print("%s\n",
- error->message ? error->message : "?");
- g_clear_error(&error);
- g_print("Data: ");
- for (j = 0; j < array->len; j++) {
- if (j > 0) {
- g_print(", ");
+ if (error->code !=
+ G_CONVERT_ERROR_PARTIAL_INPUT) {
+ g_print("%s\n",
+ error->message ?
+ error->message :
+ "?");
+ g_print("Data: ");
+ for (j = 0; j < array->len; j++) {
+ if (j > 0) {
+ g_print(", ");
+ }
+ g_print("0x%x", array->data[j]);
}
- g_print("0x%x", array->data[j]);
+ g_print("\n");
}
- g_print("\n");
+ g_clear_error(&error);
continue;
}
tmpsubst = vte_iso2022_copy(substitutions);
diff --git a/src/iso2022.txt b/src/iso2022.txt
index e67fae91..d5b3ff57 100644
--- a/src/iso2022.txt
+++ b/src/iso2022.txt
@@ -1,11 +1,12 @@
#
# Sample text from Ken Lunde's CJKV Information Processing.
#
-ISO-2022-JP/156: $B$+$J4A;z(B
-ISO-2022-KR/158: $)C1hD!)B
+ISO-2022-JP/156: [$B$+$J4A;z(B] [かな漢字]
+ISO-2022-KR/158: [$)C1hD!)B] [ㅨ䐡]
#
# Sample text based on XTerm's specs and random other docs.
#
-British : (A$(B$
-ISO-2022-JP : (J~(B~
+British: [(A$(B$] [£$]
+ISO-2022-JP: [(J~(B~] [¥~]
+ISO-2022-KR: [$)C>o^-] [억嚬]
diff --git a/src/vte.c b/src/vte.c
index cb9783f3..eeb05492 100644
--- a/src/vte.c
+++ b/src/vte.c
@@ -277,7 +277,6 @@ struct _VteTerminalPrivate {
guint mouse_last_button;
gdouble mouse_last_x, mouse_last_y;
gboolean mouse_autohide;
- gboolean mouse_autoscrolling;
guint mouse_autoscroll_tag;
/* State variables for handling match checks. */
@@ -334,7 +333,6 @@ struct _VteTerminalPrivate {
AtkObject *accessible;
/* Adjustment updates pending. */
- gboolean adjustment_changed_pending;
gboolean adjustment_changed_tag;
/* Background images/"transparency". */
@@ -1292,13 +1290,12 @@ vte_terminal_emit_adjustment_changed(gpointer data)
{
VteTerminal *terminal;
terminal = VTE_TERMINAL(data);
- if (terminal->pvt->adjustment_changed_pending) {
+ if (terminal->pvt->adjustment_changed_tag != -1) {
#ifdef VTE_DEBUG
if (vte_debug_on(VTE_DEBUG_EVENTS)) {
fprintf(stderr, "Emitting adjustment_changed.\n");
}
#endif
- terminal->pvt->adjustment_changed_pending = FALSE;
terminal->pvt->adjustment_changed_tag = -1;
gtk_adjustment_changed(terminal->adjustment);
}
@@ -1309,8 +1306,7 @@ vte_terminal_emit_adjustment_changed(gpointer data)
static void
vte_terminal_queue_adjustment_changed(VteTerminal *terminal)
{
- if (!terminal->pvt->adjustment_changed_pending) {
- terminal->pvt->adjustment_changed_pending = TRUE;
+ if (terminal->pvt->adjustment_changed_tag != -1) {
terminal->pvt->adjustment_changed_tag =
g_idle_add_full(VTE_ADJUSTMENT_PRIORITY,
vte_terminal_emit_adjustment_changed,
@@ -2262,6 +2258,7 @@ vte_terminal_ensure_cursor(VteTerminal *terminal, gboolean current)
GArray *array;
VteScreen *screen;
struct vte_charcell cell, *cells;
+ gboolean readjust = FALSE;
long add, i;
/* Must make sure we're in a sane area. */
@@ -2273,8 +2270,11 @@ vte_terminal_ensure_cursor(VteTerminal *terminal, gboolean current)
/* Create a new row. */
array = vte_new_row_data();
vte_ring_append(screen->row_data, array);
+ readjust = TRUE;
+ }
+ if (readjust) {
+ vte_terminal_adjust_adjustments(terminal, FALSE);
}
- vte_terminal_adjust_adjustments(terminal, FALSE);
/* Find the row the cursor is in. */
array = vte_ring_index(screen->row_data,
@@ -2331,8 +2331,6 @@ vte_terminal_scroll_insertion(VteTerminal *terminal)
if (delta != screen->insert_delta) {
vte_terminal_ensure_cursor(terminal, FALSE);
screen->insert_delta = delta;
- /* Update scroll bar adjustments. */
- vte_terminal_adjust_adjustments(terminal, FALSE);
}
}
@@ -7666,6 +7664,7 @@ vte_terminal_autoscroll(gpointer data)
terminal->char_height * adj;
row = terminal->pvt->selection_start.y;
vte_terminal_selection_recompute(terminal);
+ terminal->pvt->selection_start.x = 0;
terminal->pvt->selection_start.y = adj;
vte_invalidate_cells(terminal,
0,
@@ -7674,9 +7673,14 @@ vte_terminal_autoscroll(gpointer data)
row + 1 -
terminal->pvt->selection_start.y);
}
+#ifdef VTE_DEBUG
+ if (vte_debug_on(VTE_DEBUG_EVENTS)) {
+ fprintf(stderr, "Autoscrolling down.\n");
+ }
+#endif
} else
if (terminal->pvt->mouse_last_y + 2 * VTE_PAD_WIDTH >
- widget->allocation.y + widget->allocation.height) {
+ widget->allocation.height) {
adj = CLAMP(terminal->adjustment->value + 1,
terminal->adjustment->lower,
terminal->adjustment->upper -
@@ -7690,6 +7694,8 @@ vte_terminal_autoscroll(gpointer data)
terminal->char_height * adj;
row = terminal->pvt->selection_end.y;
vte_terminal_selection_recompute(terminal);
+ terminal->pvt->selection_end.x =
+ terminal->column_count;
terminal->pvt->selection_end.y =
adj + terminal->row_count - 1;
vte_invalidate_cells(terminal,
@@ -7698,11 +7704,15 @@ vte_terminal_autoscroll(gpointer data)
row,
terminal->pvt->selection_end.y -
row + 1);
+#ifdef VTE_DEBUG
+ if (vte_debug_on(VTE_DEBUG_EVENTS)) {
+ fprintf(stderr, "Autoscrolling down.\n");
+ }
+#endif
} else {
- terminal->pvt->mouse_autoscrolling = FALSE;
terminal->pvt->mouse_autoscroll_tag = -1;
}
- return terminal->pvt->mouse_autoscrolling;
+ return (terminal->pvt->mouse_autoscroll_tag != -1);
}
/* Read and handle a motion event. */
@@ -7812,13 +7822,13 @@ vte_terminal_motion_notify(GtkWidget *widget, GdkEventMotion *event)
adj);
need_autoscroll = TRUE;
}
- if (need_autoscroll && !terminal->pvt->mouse_autoscrolling) {
+ if (need_autoscroll &&
+ (terminal->pvt->mouse_autoscroll_tag == -1)) {
terminal->pvt->mouse_autoscroll_tag = g_timeout_add_full(G_PRIORITY_LOW,
50,
vte_terminal_autoscroll,
terminal,
NULL);
- terminal->pvt->mouse_autoscrolling = TRUE;
}
} else {
#ifdef VTE_DEBUG
@@ -8362,6 +8372,7 @@ vte_terminal_button_release(GtkWidget *widget, GdkEventButton *event)
/* Disconnect from autoscroll requests. */
if (terminal->pvt->mouse_autoscroll_tag != -1) {
g_source_remove(terminal->pvt->mouse_autoscroll_tag);
+ terminal->pvt->mouse_autoscroll_tag = -1;
}
}
@@ -9795,7 +9806,6 @@ vte_terminal_init(VteTerminal *terminal, gpointer *klass)
pvt->mouse_last_x = 0;
pvt->mouse_last_y = 0;
pvt->mouse_autohide = FALSE;
- pvt->mouse_autoscrolling = FALSE;
pvt->mouse_autoscroll_tag = -1;
/* Matching data. */
@@ -9888,7 +9898,6 @@ vte_terminal_init(VteTerminal *terminal, gpointer *klass)
pvt->connected_settings = NULL;
/* Bookkeeping data for adjustment-changed signals. */
- pvt->adjustment_changed_pending = FALSE;
pvt->adjustment_changed_tag = -1;
/* Set up background information. */
@@ -10150,10 +10159,6 @@ vte_terminal_finalize(GObject *object)
g_object_unref(G_OBJECT(terminal->pvt->bg_transparent_image));
terminal->pvt->bg_transparent_image = NULL;
}
- if (terminal->pvt->adjustment_changed_tag != -1) {
- g_source_remove(terminal->pvt->adjustment_changed_tag);
- terminal->pvt->adjustment_changed_tag = -1;
- }
if (terminal->pvt->bg_transparent_update_tag != -1) {
g_source_remove(terminal->pvt->bg_transparent_update_tag);
terminal->pvt->bg_transparent_update_tag = -1;
@@ -10209,6 +10214,13 @@ vte_terminal_finalize(GObject *object)
/* Disconnect from autoscroll requests. */
if (terminal->pvt->mouse_autoscroll_tag != -1) {
g_source_remove(terminal->pvt->mouse_autoscroll_tag);
+ terminal->pvt->mouse_autoscroll_tag = -1;
+ }
+
+ /* Cancel pending adjustment change notifications. */
+ if (terminal->pvt->adjustment_changed_tag != -1) {
+ g_source_remove(terminal->pvt->adjustment_changed_tag);
+ terminal->pvt->adjustment_changed_tag = -1;
}
/* Tabstop information. */
@@ -12455,6 +12467,20 @@ vte_terminal_paste_clipboard(VteTerminal *terminal)
vte_terminal_paste(terminal, GDK_SELECTION_CLIPBOARD);
}
+void
+vte_terminal_copy_primary(VteTerminal *terminal)
+{
+ g_return_if_fail(VTE_IS_TERMINAL(terminal));
+ vte_terminal_copy(terminal, GDK_SELECTION_PRIMARY);
+}
+
+void
+vte_terminal_paste_primary(VteTerminal *terminal)
+{
+ g_return_if_fail(VTE_IS_TERMINAL(terminal));
+ vte_terminal_paste(terminal, GDK_SELECTION_PRIMARY);
+}
+
/* Append the menu items for our input method context to the given shell. */
void
vte_terminal_im_append_menuitems(VteTerminal *terminal, GtkMenuShell *menushell)
@@ -12992,7 +13018,7 @@ vte_terminal_set_scrollback_lines(VteTerminal *terminal, long lines)
screens[i]->scroll_delta = CLAMP(screens[i]->scroll_delta,
low, highd);
screens[i]->cursor_current.row = CLAMP(screens[i]->cursor_current.row,
- low, high);
+ low, highd);
}
terminal->pvt->scrollback_lines = lines;
@@ -13168,10 +13194,15 @@ vte_terminal_reset(VteTerminal *terminal, gboolean full, gboolean clear_history)
terminal->pvt->normal_screen.cursor_saved.col = 0;
terminal->pvt->normal_screen.cursor_current.row = 0;
terminal->pvt->normal_screen.cursor_current.col = 0;
+ terminal->pvt->normal_screen.scroll_delta = 0;
+ terminal->pvt->normal_screen.insert_delta = 0;
terminal->pvt->alternate_screen.cursor_saved.row = 0;
terminal->pvt->alternate_screen.cursor_saved.col = 0;
terminal->pvt->alternate_screen.cursor_current.row = 0;
terminal->pvt->alternate_screen.cursor_current.col = 0;
+ terminal->pvt->alternate_screen.scroll_delta = 0;
+ terminal->pvt->alternate_screen.insert_delta = 0;
+ vte_terminal_adjust_adjustments(terminal, TRUE);
}
/* Clear the status lines. */
terminal->pvt->normal_screen.status_line = FALSE;
diff --git a/src/vte.h b/src/vte.h
index d603e455..4ef0e667 100644
--- a/src/vte.h
+++ b/src/vte.h
@@ -134,6 +134,8 @@ void vte_terminal_feed_child(VteTerminal *terminal,
* the terminal. */
void vte_terminal_copy_clipboard(VteTerminal *terminal);
void vte_terminal_paste_clipboard(VteTerminal *terminal);
+void vte_terminal_copy_primary(VteTerminal *terminal);
+void vte_terminal_paste_primary(VteTerminal *terminal);
/* Set the terminal's size. */
void vte_terminal_set_size(VteTerminal *terminal, long columns, long rows);
diff --git a/vte.spec b/vte.spec
index fe759bc9..d95554c1 100644
--- a/vte.spec
+++ b/vte.spec
@@ -1,5 +1,5 @@
Name: vte
-Version: 0.8.10
+Version: 0.8.11
Release: 1
Summary: An experimental terminal emulator.
License: LGPL
@@ -61,6 +61,10 @@ rm $RPM_BUILD_ROOT/%{_libdir}/lib%{name}.la
%{_libdir}/pkgconfig/*
%changelog
+* Thu Aug 29 2002 Nalin Dahyabhai <nalin@redhat.com> 0.8.11-1
+- clean up autoscroll (#70481)
+- add Korean text examples to docs
+
* Tue Aug 27 2002 Nalin Dahyabhai <nalin@redhat.com> 0.8.10-1
- autoscroll (#70481)
- only perform cr-lf substitutions when pasting (#72639)