support visual block mode
This commit is contained in:
parent
7443b8fb8b
commit
115e466615
|
@ -1,6 +1,6 @@
|
||||||
diff -aur vte-0.32.2-old/src/vteaccess.c vte-0.32.2/src/vteaccess.c
|
diff -aur vte-0.32.2-old/src/vteaccess.c vte-0.32.2/src/vteaccess.c
|
||||||
--- vte-0.32.2-old/src/vteaccess.c 2012-07-06 19:26:00.615978048 -0400
|
--- vte-0.32.2-old/src/vteaccess.c 2012-07-06 22:23:20.937715584 -0400
|
||||||
+++ vte-0.32.2/src/vteaccess.c 2012-07-06 19:26:52.543297289 -0400
|
+++ vte-0.32.2/src/vteaccess.c 2012-07-06 22:23:26.521119667 -0400
|
||||||
@@ -1666,7 +1666,7 @@
|
@@ -1666,7 +1666,7 @@
|
||||||
VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
|
VTE_TERMINAL_ACCESSIBLE_PRIVATE_DATA);
|
||||||
xy_from_offset (priv, start_offset, &start_x, &start_y);
|
xy_from_offset (priv, start_offset, &start_x, &start_y);
|
||||||
|
@ -11,8 +11,8 @@ diff -aur vte-0.32.2-old/src/vteaccess.c vte-0.32.2/src/vteaccess.c
|
||||||
}
|
}
|
||||||
|
|
||||||
diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c
|
diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c
|
||||||
--- vte-0.32.2-old/src/vte.c 2012-07-06 19:26:00.612644674 -0400
|
--- vte-0.32.2-old/src/vte.c 2012-07-06 22:23:20.934382208 -0400
|
||||||
+++ vte-0.32.2/src/vte.c 2012-07-06 19:26:52.479963159 -0400
|
+++ vte-0.32.2/src/vte.c 2012-07-06 22:31:02.140287012 -0400
|
||||||
@@ -14568,7 +14568,7 @@
|
@@ -14568,7 +14568,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,7 +22,24 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c
|
||||||
long start_col, long start_row,
|
long start_col, long start_row,
|
||||||
long end_col, long end_row,
|
long end_col, long end_row,
|
||||||
int start_offset, int end_offset)
|
int start_offset, int end_offset)
|
||||||
@@ -14603,7 +14603,7 @@
|
@@ -14593,6 +14593,16 @@
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
+gboolean
|
||||||
|
+vte_terminal_get_selection_block_mode(VteTerminal *terminal) {
|
||||||
|
+ return terminal->pvt->selection_block_mode;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+void
|
||||||
|
+vte_terminal_set_selection_block_mode(VteTerminal *terminal, gboolean block_mode) {
|
||||||
|
+ return terminal->pvt->selection_block_mode = block_mode;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void
|
||||||
|
_vte_terminal_remove_selection(VteTerminal *terminal)
|
||||||
|
{
|
||||||
|
@@ -14603,7 +14613,7 @@
|
||||||
_vte_terminal_select_empty_at(VteTerminal *terminal,
|
_vte_terminal_select_empty_at(VteTerminal *terminal,
|
||||||
long col, long row)
|
long col, long row)
|
||||||
{
|
{
|
||||||
|
@ -31,7 +48,7 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -15293,7 +15293,7 @@
|
@@ -15293,7 +15303,7 @@
|
||||||
g_free (row_text);
|
g_free (row_text);
|
||||||
g_match_info_free (match_info);
|
g_match_info_free (match_info);
|
||||||
|
|
||||||
|
@ -40,18 +57,20 @@ diff -aur vte-0.32.2-old/src/vte.c vte-0.32.2/src/vte.c
|
||||||
/* Quite possibly the math here should not access adjustment directly... */
|
/* Quite possibly the math here should not access adjustment directly... */
|
||||||
value = gtk_adjustment_get_value(terminal->adjustment);
|
value = gtk_adjustment_get_value(terminal->adjustment);
|
||||||
page_size = gtk_adjustment_get_page_size(terminal->adjustment);
|
page_size = gtk_adjustment_get_page_size(terminal->adjustment);
|
||||||
|
Only in vte-0.32.2/src: vte.gresource.xml
|
||||||
diff -aur vte-0.32.2-old/src/vte.h vte-0.32.2/src/vte.h
|
diff -aur vte-0.32.2-old/src/vte.h vte-0.32.2/src/vte.h
|
||||||
--- vte-0.32.2-old/src/vte.h 2012-07-06 19:26:00.612644674 -0400
|
--- vte-0.32.2-old/src/vte.h 2012-07-06 22:23:20.934382208 -0400
|
||||||
+++ vte-0.32.2/src/vte.h 2012-07-06 19:28:06.264224798 -0400
|
+++ vte-0.32.2/src/vte.h 2012-07-06 22:28:20.071533871 -0400
|
||||||
@@ -485,6 +485,11 @@
|
@@ -296,6 +296,12 @@
|
||||||
|
/* simple manipulation of selection */
|
||||||
char *vte_get_user_shell (void);
|
void vte_terminal_select_all(VteTerminal *terminal);
|
||||||
|
void vte_terminal_select_none(VteTerminal *terminal);
|
||||||
+void vte_terminal_select_text(VteTerminal *terminal,
|
+void vte_terminal_select_text(VteTerminal *terminal,
|
||||||
+ long start_col, long start_row,
|
+ long start_col, long start_row,
|
||||||
+ long end_col, long end_row,
|
+ long end_col, long end_row,
|
||||||
+ int start_offset, int end_offset);
|
+ int start_offset, int end_offset);
|
||||||
+
|
+gboolean vte_terminal_get_selection_block_mode(VteTerminal *terminal);
|
||||||
/* Accessors for bindings. */
|
+void vte_terminal_set_selection_block_mode(VteTerminal *terminal, gboolean block_mode);
|
||||||
#if !GTK_CHECK_VERSION (2, 91, 2)
|
|
||||||
GtkAdjustment *vte_terminal_get_adjustment(VteTerminal *terminal);
|
/* Set the terminal's size. */
|
||||||
|
void vte_terminal_set_size(VteTerminal *terminal,
|
||||||
|
|
19
termite.c
19
termite.c
|
@ -26,7 +26,8 @@ typedef enum select_mode {
|
||||||
SELECT_OFF = 0,
|
SELECT_OFF = 0,
|
||||||
SELECT_ON,
|
SELECT_ON,
|
||||||
SELECT_VISUAL,
|
SELECT_VISUAL,
|
||||||
SELECT_VISUAL_LINE
|
SELECT_VISUAL_LINE,
|
||||||
|
SELECT_VISUAL_BLOCK
|
||||||
} select_mode;
|
} select_mode;
|
||||||
|
|
||||||
typedef struct select_info {
|
typedef struct select_info {
|
||||||
|
@ -91,6 +92,8 @@ static void cursor_moved_cb(VteTerminal *vte, select_info *select) {
|
||||||
long begin = select->begin_row * n_columns + select->begin_col;
|
long begin = select->begin_row * n_columns + select->begin_col;
|
||||||
long end = end_row * n_columns + end_col;
|
long end = end_row * n_columns + end_col;
|
||||||
|
|
||||||
|
vte_terminal_set_selection_block_mode(vte, select->mode == SELECT_VISUAL_BLOCK);
|
||||||
|
|
||||||
if (select->mode == SELECT_VISUAL) {
|
if (select->mode == SELECT_VISUAL) {
|
||||||
if (begin < end) {
|
if (begin < end) {
|
||||||
vte_terminal_select_text(vte, select->begin_col, select->begin_row,
|
vte_terminal_select_text(vte, select->begin_col, select->begin_row,
|
||||||
|
@ -107,6 +110,14 @@ static void cursor_moved_cb(VteTerminal *vte, select_info *select) {
|
||||||
vte_terminal_select_text(vte, 0, end_row,
|
vte_terminal_select_text(vte, 0, end_row,
|
||||||
n_columns - 1, select->begin_row, 0, 0);
|
n_columns - 1, select->begin_row, 0, 0);
|
||||||
}
|
}
|
||||||
|
} else if (select->mode == SELECT_VISUAL_BLOCK) {
|
||||||
|
if (begin < end) {
|
||||||
|
vte_terminal_select_text(vte, MIN(select->begin_col, end_col), select->begin_row,
|
||||||
|
MAX(select->begin_col, end_col), end_row, 0, 0);
|
||||||
|
} else {
|
||||||
|
vte_terminal_select_text(vte, MIN(select->begin_col, end_col), end_row,
|
||||||
|
MAX(select->begin_col, end_col), select->begin_row, 0, 0);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
vte_terminal_copy_primary(vte);
|
vte_terminal_copy_primary(vte);
|
||||||
|
@ -136,6 +147,12 @@ gboolean key_press_cb(VteTerminal *vte, GdkEventKey *event, search_panel_info *i
|
||||||
const guint modifiers = event->state & gtk_accelerator_get_default_mod_mask();
|
const guint modifiers = event->state & gtk_accelerator_get_default_mod_mask();
|
||||||
gboolean dynamic_title = FALSE, urgent_on_bell = FALSE, clickable_url = FALSE;
|
gboolean dynamic_title = FALSE, urgent_on_bell = FALSE, clickable_url = FALSE;
|
||||||
if (info->select.mode) {
|
if (info->select.mode) {
|
||||||
|
if (modifiers == GDK_CONTROL_MASK) {
|
||||||
|
if (gdk_keyval_to_lower(event->keyval) == GDK_KEY_v) {
|
||||||
|
toggle_visual(vte, &info->select, SELECT_VISUAL_BLOCK);
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
switch (event->keyval) {
|
switch (event->keyval) {
|
||||||
case GDK_KEY_Left:
|
case GDK_KEY_Left:
|
||||||
case GDK_KEY_h:
|
case GDK_KEY_h:
|
||||||
|
|
Loading…
Reference in New Issue