[vte/wip/egmont/bidi: 69/87] fix block selection at cjks



commit ef08baf427c3aa0c1ab2ddaae75dd6601d40af99
Author: Egmont Koblinger <egmont gmail com>
Date:   Mon Sep 24 13:34:57 2018 +0200

    fix block selection at cjks

 src/vte.cc | 5 +++++
 1 file changed, 5 insertions(+)
---
diff --git a/src/vte.cc b/src/vte.cc
index e2b29b49..947b0248 100644
--- a/src/vte.cc
+++ b/src/vte.cc
@@ -5515,12 +5515,17 @@ Terminal::cell_is_selected_vis(vte::grid::column_t col,
 {
         if (m_selection_block_mode) {
                 /* In block mode, make sure CJKs and TABs aren't cut in half. */
+                /* BiDi: convert to logical column... */
+                vte::base::BidiRow const* bidirow = m_ringview.get_row_map(row);
+                col = bidirow->vis2log(col);
                 while (col > 0) {
                         VteCell const* cell = find_charcell(col, row);
                         if (!cell || !cell->attr.fragment())
                                 break;
                         col--;
                 }
+                /* ... and back to visual. */
+                col = bidirow->log2vis(col);
                 return m_selection_resolved.box_contains ({ row, col });
         } else {
                 /* BiDi: convert to logical column. */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]