loleaflet/src/control/Control.PartsPreview.js |   51 +++++++++++++++++++++++++-
 1 file changed, 50 insertions(+), 1 deletion(-)

New commits:
commit 77a0e0bca34dd65204f0cc81c2b3613bf3b22d6e
Author:     merttumer <mert.tu...@collabora.com>
AuthorDate: Fri Mar 1 18:11:59 2019 +0300
Commit:     Andras Timar <andras.ti...@collabora.com>
CommitDate: Fri Sep 20 23:53:49 2019 +0200

    Ability to switch slides by arrow up/down keys in edit mode
    
    Change-Id: Ic465636df8a1960364074149a41ea7d0209dbdab
    Signed-off-by: merttumer <mert.tu...@collabora.com>
    Reviewed-on: https://gerrit.libreoffice.org/68585
    Reviewed-by: Aron Budea <aron.bu...@collabora.com>
    Tested-by: Aron Budea <aron.bu...@collabora.com>
    (cherry picked from commit f3ea0a6ffe03425c557297c53768cb927727b4af)
    Reviewed-on: https://gerrit.libreoffice.org/79313
    Reviewed-by: Andras Timar <andras.ti...@collabora.com>
    Tested-by: Andras Timar <andras.ti...@collabora.com>

diff --git a/loleaflet/src/control/Control.PartsPreview.js 
b/loleaflet/src/control/Control.PartsPreview.js
index b46d356c6..92bbd2673 100644
--- a/loleaflet/src/control/Control.PartsPreview.js
+++ b/loleaflet/src/control/Control.PartsPreview.js
@@ -8,6 +8,7 @@ L.Control.PartsPreview = L.Control.extend({
        options: {
                autoUpdate: true
        },
+       partsFocused: false,
 
        onAdd: function (map) {
                this._previewInitialized = false;
@@ -61,6 +62,24 @@ L.Control.PartsPreview = L.Control.extend({
                                                }
                                        }
                                });
+
+                               this._map.on('click', function() {
+                                       this.partsFocused = false;
+                               }, this);
+
+                               this._map.on('keydown', function(e) {
+                                       if (this.partsFocused === true) {
+                                               switch 
(e.originalEvent.keyCode) {
+                                               case 38:
+                                                       this._setPart('prev');
+                                                       break;
+                                               case 40:
+                                                       this._setPart('next');
+                                                       break;
+                                               }
+                                       }
+                               }, this);
+
                                this._scrollContainer = $('#slide-sorter 
.mCSB_container').get(0);
 
                                // Add a special frame just as a drop-site for 
reordering.
@@ -110,7 +129,10 @@ L.Control.PartsPreview = L.Control.extend({
                        .on(img, 'click', L.DomEvent.stopPropagation)
                        .on(img, 'click', L.DomEvent.stop)
                        .on(img, 'click', this._setPart, this)
-                       .on(img, 'click', this._map.focus, this._map);
+                       .on(img, 'click', this._map.focus, this._map)
+                       .on(img, 'click', function() {
+                               this.partsFocused = true;
+                       }, this);
 
                var topBound = this._previewContTop;
                var previewFrameTop = 0;
@@ -150,6 +172,33 @@ L.Control.PartsPreview = L.Control.extend({
        },
 
        _setPart: function (e) {
+               //helper function to check if the view is in the scrollview 
visible area
+               function isVisible(el) {
+                       var elemRect = el.getBoundingClientRect();
+                       var elemTop = elemRect.top;
+                       var elemBottom = elemRect.bottom;
+                       var isVisible = (elemTop >= 0) && (elemBottom <= 
window.innerHeight);
+                       return isVisible;
+               }
+               if (e === 'prev' || e === 'next') {
+                       this._map.setPart(e);
+                       var node = $('#slide-sorter .mCSB_container 
.preview-frame')[this._map.getCurrentPartNumber()];
+                       if (!isVisible(node)) {
+                               if (e === 'prev') {
+                                       setTimeout(function () {
+                                               
$('#slide-sorter').mCustomScrollbar('scrollTo', node);
+                                       }, 50);
+                               } else {
+                                       var nodeHeight = $(node).height();
+                                       var sliderHeight= 
$('#slide-sorter').height();
+                                       var nodePos = $(node).position().top;
+                                       setTimeout(function () {
+                                               
$('#slide-sorter').mCustomScrollbar('scrollTo', 
nodePos-(sliderHeight-nodeHeight-nodeHeight/2));
+                                       }, 50);
+                               }
+                       }
+                       return;
+               }
                var part = $('#slide-sorter .mCSB_container 
.preview-frame').index(e.target.parentNode);
                if (part !== null) {
                        var partId = parseInt(part) - 1; // The first part is 
just a drop-site for reordering.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to