Branch: refs/heads/master Author: Dimitar Toshkov Zhekov dimitar.zhekov@gmail.com Committer: Dimitar Toshkov Zhekov dimitar.zhekov@gmail.com Date: Wed, 26 Apr 2017 18:58:22 UTC Commit: 4dca249d2446f0cd3fa4ff47b8b10e1ad5424db4 https://github.com/geany/geany-plugins/commit/4dca249d2446f0cd3fa4ff47b8b10e...
Log Message: ----------- Workarounds for Scintilla rectangle selection bug(s)
Modified Paths: -------------- geanyextrasel/src/extrasel.c
Modified: geanyextrasel/src/extrasel.c 30 lines changed, 14 insertions(+), 16 deletions(-) =================================================================== @@ -102,7 +102,12 @@ static void create_selection(ScintillaObject *sci, int anchor, int anchor_space,
sci_set_anchor_space(sci, anchor_space); sci_set_cursor_space(sci, cursor_space); - sci_send_command(sci, SCI_CANCEL); + + /* SCI bug: CANCEL may reduce a rectangle selection to a single line */ + if (rectangle) + sci_set_selection_mode(sci, SC_SEL_RECTANGLE); + else + sci_send_command(sci, SCI_CANCEL); }
static void convert_selection(ScintillaObject *sci, gboolean rectangle) @@ -135,23 +140,16 @@ static const command_key command_keys[] =
static void column_mode_command(ScintillaObject *sci, int command) { - gboolean convert = !sci_rectangle_selection(sci); - int anchor; - int anchor_space; + /* In the current SCI versions, using the command_keys->command for + rectangular selection creates various problems. So we select a + stream instead, and convert it to rectangle. It's slower, but all + command-s move the cursor at least a word. */ + int anchor = sci_get_anchor(sci); + int anchor_space = sci_get_anchor_space(sci);
- if (convert) - { - anchor = sci_get_anchor(sci); - anchor_space = sci_get_anchor_space(sci); - } - sci_set_selection_mode(sci, SC_SEL_RECTANGLE); + sci_set_selection_mode(sci, SC_SEL_STREAM); sci_send_command(sci, command); - if (convert) - { - sci_set_anchor(sci, anchor); - sci_set_anchor_space(sci, anchor_space); - } - sci_send_command(sci, SCI_CANCEL); + create_selection(sci, anchor, anchor_space, TRUE); }
static gboolean on_key_press_event(GtkWidget *widget, GdkEventKey *event,
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).