emacs-diffs
[Top][All Lists]
Advanced

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

[Emacs-diffs] trunk r117589: Support horizontal scrolling of bidirection


From: Eli Zaretskii
Subject: [Emacs-diffs] trunk r117589: Support horizontal scrolling of bidirectional text.
Date: Sun, 27 Jul 2014 18:06:03 +0000
User-agent: Bazaar (2.6b2)

------------------------------------------------------------
revno: 117589
revision-id: address@hidden
parent: address@hidden
committer: Eli Zaretskii <address@hidden>
branch nick: trunk
timestamp: Sun 2014-07-27 21:05:37 +0300
message:
  Support horizontal scrolling of bidirectional text.
  
   lisp/scroll-bar.el (scroll-bar-toolkit-horizontal-scroll): Add
   rudimentary support for bidirectional text.
modified:
  lisp/ChangeLog                 changelog-20091113204419-o5vbwnq5f7feedwu-1432
  lisp/scroll-bar.el             
scrollbar.el-20091113204419-o5vbwnq5f7feedwu-535
=== modified file 'lisp/ChangeLog'
--- a/lisp/ChangeLog    2014-07-27 13:21:30 +0000
+++ b/lisp/ChangeLog    2014-07-27 18:05:37 +0000
@@ -1,3 +1,8 @@
+2014-07-27  Eli Zaretskii  <address@hidden>
+
+       * scroll-bar.el (scroll-bar-toolkit-horizontal-scroll): Add
+       rudimentary support for bidirectional text.
+
 2014-07-27  Martin Rudalics  <address@hidden>
 
        * frame.el (frame-notice-user-settings): Rewrite using

=== modified file 'lisp/scroll-bar.el'
--- a/lisp/scroll-bar.el        2014-07-27 13:21:30 +0000
+++ b/lisp/scroll-bar.el        2014-07-27 18:05:37 +0000
@@ -451,6 +451,9 @@
   (let* ((end-position (event-end event))
         (window (nth 0 end-position))
         (part (nth 4 end-position))
+        (bidi-factor (if (eq (current-bidi-paragraph-direction) 'left-to-right)
+                         1
+                       -1))
         before-scroll)
     (cond
      ((eq part 'end-scroll))
@@ -462,27 +465,32 @@
        (setq before-scroll (or before-scroll (point)))
        (cond
         ((eq part 'before-handle)
-         (scroll-right 4))
+         (scroll-right (* bidi-factor 4)))
         ((eq part 'after-handle)
-         (scroll-left 4))
+         (scroll-left (* bidi-factor 4)))
         ((eq part 'ratio)
          (let* ((portion-whole (nth 2 end-position))
                 (columns (scroll-bar-scale portion-whole
                                            (1- (window-width)))))
            (scroll-right
-            (cond
-             ((not (zerop columns))
-              columns)
-             ((< (car portion-whole) 0) -1)
-             (t 1)))))
+            (* (cond
+                ((not (zerop columns))
+                 columns)
+                ((< (car portion-whole) 0) -1)
+                (t 1))
+               bidi-factor))))
         ((eq part 'left)
-         (scroll-right 1))
+         (scroll-right (* bidi-factor 1)))
         ((eq part 'right)
-         (scroll-left 1))
+         (scroll-left (* bidi-factor 1)))
         ((eq part 'leftmost)
-         (goto-char (line-beginning-position)))
+         (goto-char (if (eq bidi-factor 1)
+                        (line-beginning-position)
+                      (line-end-position))))
         ((eq part 'rightmost)
-         (goto-char (line-end-position)))
+         (goto-char (if (eq bidi-factor 1)
+                        (line-end-position)
+                      (line-beginning-position))))
         ((eq part 'horizontal-handle)
          (scroll-bar-horizontal-drag-1 event))))
       (sit-for 0)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]