Gitweb links:

...log 
http://git.netsurf-browser.org/netsurf.git/shortlog/729e56dccca8d480dccaf4ea286eed5adc2e0a8f
...commit 
http://git.netsurf-browser.org/netsurf.git/commit/729e56dccca8d480dccaf4ea286eed5adc2e0a8f
...tree 
http://git.netsurf-browser.org/netsurf.git/tree/729e56dccca8d480dccaf4ea286eed5adc2e0a8f

The branch, master has been updated
       via  729e56dccca8d480dccaf4ea286eed5adc2e0a8f (commit)
       via  4fc78449ff6fe7042aadf0f9e3706adbb21066d3 (commit)
      from  88d5ea866858506aae2ff2ecbdee2b4f960ab89f (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commitdiff 
http://git.netsurf-browser.org/netsurf.git/commit/?id=729e56dccca8d480dccaf4ea286eed5adc2e0a8f
commit 729e56dccca8d480dccaf4ea286eed5adc2e0a8f
Author: Michael Drake <[email protected]>
Commit: Michael Drake <[email protected]>

    GTK: Add support for word left/right keybindings.

diff --git a/frontends/gtk/gui.c b/frontends/gtk/gui.c
index 76bbd99..fa9c9cf 100644
--- a/frontends/gtk/gui.c
+++ b/frontends/gtk/gui.c
@@ -152,10 +152,14 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key)
 
        case GDK_KEY(Left):
        case GDK_KEY(KP_Left):
+               if (key->state & GDK_CONTROL_MASK)
+                       return NS_KEY_WORD_LEFT;
                return NS_KEY_LEFT;
 
        case GDK_KEY(Right):
        case GDK_KEY(KP_Right):
+               if (key->state & GDK_CONTROL_MASK)
+                       return NS_KEY_WORD_RIGHT;
                return NS_KEY_RIGHT;
 
        case GDK_KEY(Up):


commitdiff 
http://git.netsurf-browser.org/netsurf.git/commit/?id=4fc78449ff6fe7042aadf0f9e3706adbb21066d3
commit 4fc78449ff6fe7042aadf0f9e3706adbb21066d3
Author: Pranjal Kole <[email protected]>
Commit: Michael Drake <[email protected]>

    textarea: always clear selection on NS_KEY_WORD_{LEFT,RIGHT}
    
    This bug can be seen by selecting some text starting from the beginning
    of a textarea (so that caret is 0) and then pressing the
    NS_KEY_WORD_LEFT binding.
    
    NS_KEY_WORD_LEFT was breaking early when caret was 0. So, to always
    clear the selection, the clear selection code has been brought above the
    break statement.
    
    NS_KEY_WORD_RIGHT did not have such a break statement, so one has been
    added for consistency, and because string operations are expensive.

diff --git a/desktop/textarea.c b/desktop/textarea.c
index e25c633..e0e8744 100644
--- a/desktop/textarea.c
+++ b/desktop/textarea.c
@@ -2743,6 +2743,9 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                case NS_KEY_WORD_LEFT:
                        if (readonly)
                                break;
+                       if (ta->sel_start != -1) {
+                               textarea_clear_selection(ta);
+                       }
                        if (caret == 0)
                                break;
                        caret--;
@@ -2756,9 +2759,6 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                                        break;
                                }
                        }
-                       if (ta->sel_start != -1) {
-                               textarea_clear_selection(ta);
-                       }
                        break;
                case NS_KEY_DELETE_WORD_LEFT:
                        if (readonly)
@@ -2807,6 +2807,11 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                case NS_KEY_WORD_RIGHT:
                        if (readonly)
                                break;
+                       if (ta->sel_start != -1) {
+                               textarea_clear_selection(ta);
+                       }
+                       if (caret == ta->show->len - 1)
+                               break;
                        if (strchr(sep, ta->show->data[caret]) != NULL &&
                                        caret < ta->show->len - 1) {
                                while (strchr(sep, ta->show->data[caret]) !=
@@ -2823,9 +2828,6 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                        while (strchr(sep, ta->show->data[caret]) != NULL &&
                                        caret < ta->show->len - 1)
                                caret++;
-                       if (ta->sel_start != -1) {
-                               textarea_clear_selection(ta);
-                       }
                        break;
                case NS_KEY_DELETE_WORD_RIGHT:
                        if (readonly)


-----------------------------------------------------------------------

Summary of changes:
 desktop/textarea.c  |   14 ++++++++------
 frontends/gtk/gui.c |    4 ++++
 2 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/desktop/textarea.c b/desktop/textarea.c
index e25c633..e0e8744 100644
--- a/desktop/textarea.c
+++ b/desktop/textarea.c
@@ -2743,6 +2743,9 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                case NS_KEY_WORD_LEFT:
                        if (readonly)
                                break;
+                       if (ta->sel_start != -1) {
+                               textarea_clear_selection(ta);
+                       }
                        if (caret == 0)
                                break;
                        caret--;
@@ -2756,9 +2759,6 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                                        break;
                                }
                        }
-                       if (ta->sel_start != -1) {
-                               textarea_clear_selection(ta);
-                       }
                        break;
                case NS_KEY_DELETE_WORD_LEFT:
                        if (readonly)
@@ -2807,6 +2807,11 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                case NS_KEY_WORD_RIGHT:
                        if (readonly)
                                break;
+                       if (ta->sel_start != -1) {
+                               textarea_clear_selection(ta);
+                       }
+                       if (caret == ta->show->len - 1)
+                               break;
                        if (strchr(sep, ta->show->data[caret]) != NULL &&
                                        caret < ta->show->len - 1) {
                                while (strchr(sep, ta->show->data[caret]) !=
@@ -2823,9 +2828,6 @@ bool textarea_keypress(struct textarea *ta, uint32_t key)
                        while (strchr(sep, ta->show->data[caret]) != NULL &&
                                        caret < ta->show->len - 1)
                                caret++;
-                       if (ta->sel_start != -1) {
-                               textarea_clear_selection(ta);
-                       }
                        break;
                case NS_KEY_DELETE_WORD_RIGHT:
                        if (readonly)
diff --git a/frontends/gtk/gui.c b/frontends/gtk/gui.c
index 76bbd99..fa9c9cf 100644
--- a/frontends/gtk/gui.c
+++ b/frontends/gtk/gui.c
@@ -152,10 +152,14 @@ uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key)
 
        case GDK_KEY(Left):
        case GDK_KEY(KP_Left):
+               if (key->state & GDK_CONTROL_MASK)
+                       return NS_KEY_WORD_LEFT;
                return NS_KEY_LEFT;
 
        case GDK_KEY(Right):
        case GDK_KEY(KP_Right):
+               if (key->state & GDK_CONTROL_MASK)
+                       return NS_KEY_WORD_RIGHT;
                return NS_KEY_RIGHT;
 
        case GDK_KEY(Up):


-- 
NetSurf Browser
_______________________________________________
netsurf-commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to