loleaflet/src/control/Control.Toolbar.js     |   31 ++++++++++++++++++++++-----
 loleaflet/src/layer/tile/ImpressTileLayer.js |    9 +++++--
 loleaflet/src/layer/tile/WriterTileLayer.js  |   12 +++++++---
 3 files changed, 41 insertions(+), 11 deletions(-)

New commits:
commit 1054dce67bf134f301aa2d3305f3aed3a99fb6fe
Author:     Dennis Francis <dennis.fran...@collabora.com>
AuthorDate: Thu Jan 30 19:00:37 2020 +0530
Commit:     Jan Holesovsky <ke...@collabora.com>
CommitDate: Mon Feb 10 12:00:56 2020 +0100

    Adapt align commands based on selection type
    
    Use map._clip._selectionType to decide what align command to send
    when one clicks on one of the toolbar align buttons. selectionType
    is either 'text' or 'complex'; 'complex' by definition is set for
    non-text selections like images and charts.
    
    What is to be done next ?
    
    1. Need to setup statechange: messages from core.git for
    .uno:ObjectAlignLeft, .uno:AlignCenter, .uno:ObjectAlignRight
    from sw/ sd/ in Get*State() methods of the relevant shells. After
    this we need to make online toolbar align buttons to react to the
    correct statechange messages based on selectionType.
    
    2. _selectionType is not always correct. In Impress it
    is always 'text' regardless of selection type. In Writer, for
    shape selection, it is set to 'text'. SelectionType comes from
    XTransferable2::isComplex(). Its implementations in sw/ and sd/
    in core.git need fixing.
    
    PS: In Calc, aligning images/objects does not make sense w.r.t to the
    sheet in general. The align buttons are disabled in core-desktop
    when an image is selected.
    
    Change-Id: I8223cd03f864fa92523224bf88ccb992edfc2686
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/87739
    Tested-by: Jan Holesovsky <ke...@collabora.com>
    Reviewed-by: Jan Holesovsky <ke...@collabora.com>

diff --git a/loleaflet/src/control/Control.Toolbar.js 
b/loleaflet/src/control/Control.Toolbar.js
index 80c4bd57f..6c718af9b 100644
--- a/loleaflet/src/control/Control.Toolbar.js
+++ b/loleaflet/src/control/Control.Toolbar.js
@@ -103,6 +103,21 @@ function _cancelSearch() {
        map._onGotFocus();
 }
 
+function getUNOCommand(unoData) {
+       if (typeof unoData !== 'object')
+               return unoData;
+
+       if (!map._clip)
+               return unoData.textCommand;
+
+       var selectionType = map._clip._selectionType;
+
+       if (!selectionType || selectionType === 'text')
+               return unoData.textCommand;
+
+       return unoData.objectCommand;
+}
+
 function onClick(e, id, item, subItem) {
        if (w2ui['editbar'].get(id) !== null) {
                var toolbar = w2ui['editbar'];
@@ -152,7 +167,7 @@ function onClick(e, id, item, subItem) {
                        map.toggleCommandState(item.unosheet);
                }
                else {
-                       map.toggleCommandState(item.uno);
+                       map.toggleCommandState(getUNOCommand(item.uno));
                }
        }
        else if (id === 'print') {
@@ -884,9 +899,15 @@ function initNormalToolbar() {
                {type: 'color',  id: 'backcolor', img: 'backcolor', hint: 
_UNO('.uno:BackColor', 'text'), hidden: true},
                {type: 'color',  id: 'backgroundcolor', img: 'backgroundcolor', 
hint: _UNO('.uno:BackgroundColor'), hidden: true},
                {type: 'break' , id: 'breakcolor', mobile:false},
-               {type: 'button',  id: 'leftpara',  img: 'alignleft', hint: 
_UNO('.uno:LeftPara', '', true), uno: 'LeftPara', hidden: true, unosheet: 
'AlignLeft', disabled: true},
-               {type: 'button',  id: 'centerpara',  img: 'alignhorizontal', 
hint: _UNO('.uno:CenterPara', '', true), uno: 'CenterPara', hidden: true, 
unosheet: 'AlignHorizontalCenter', disabled: true},
-               {type: 'button',  id: 'rightpara',  img: 'alignright', hint: 
_UNO('.uno:RightPara', '', true), uno: 'RightPara', hidden: true, unosheet: 
'AlignRight', disabled: true},
+               {type: 'button',  id: 'leftpara',  img: 'alignleft', hint: 
_UNO('.uno:LeftPara', '', true),
+                       uno: {textCommand: 'LeftPara', objectCommand: 
'ObjectAlignLeft'},
+                       hidden: true, unosheet: 'AlignLeft', disabled: true},
+               {type: 'button',  id: 'centerpara',  img: 'alignhorizontal', 
hint: _UNO('.uno:CenterPara', '', true),
+                       uno: {textCommand: 'CenterPara', objectCommand: 
'AlignCenter'},
+                       hidden: true, unosheet: 'AlignHorizontalCenter', 
disabled: true},
+               {type: 'button',  id: 'rightpara',  img: 'alignright', hint: 
_UNO('.uno:RightPara', '', true),
+                       uno: {textCommand: 'RightPara', objectCommand: 
'ObjectAlignRight'},
+                       hidden: true, unosheet: 'AlignRight', disabled: true},
                {type: 'button',  id: 'justifypara',  img: 'alignblock', hint: 
_UNO('.uno:JustifyPara', '', true), uno: 'JustifyPara', hidden: true, unosheet: 
'', disabled: true},
                {type: 'break', id: 'breakpara', hidden: true},
                {type: 'drop',  id: 'setborderstyle',  img: 'setborderstyle', 
hint: _('Borders'), hidden: true,
@@ -2216,7 +2237,7 @@ function onUpdatePermission(e) {
                        var alwaysEnable = found.length !== 0;
 
                        if (e.perm === 'edit') {
-                               var unoCmd = map.getDocType() === 'spreadsheet' 
? items[idx].unosheet : items[idx].uno;
+                               var unoCmd = map.getDocType() === 'spreadsheet' 
? items[idx].unosheet : getUNOCommand(items[idx].uno);
                                var keepDisabled = 
map['stateChangeHandler'].getItemValue(unoCmd) === 'disabled';
                                if (!keepDisabled || alwaysEnable) {
                                        toolbar.enable(items[idx].id);
diff --git a/loleaflet/src/layer/tile/ImpressTileLayer.js 
b/loleaflet/src/layer/tile/ImpressTileLayer.js
index ae3d65646..568796e47 100644
--- a/loleaflet/src/layer/tile/ImpressTileLayer.js
+++ b/loleaflet/src/layer/tile/ImpressTileLayer.js
@@ -124,9 +124,12 @@ L.ImpressTileLayer = L.TileLayer.extend({
                        {type: 'button',  id: 'fontcolor', img: 'textcolor', 
hint: _UNO('.uno:FontColor')},
                        {type: 'button',  id: 'backcolor', img: 'backcolor', 
hint: _UNO('.uno:BackgroundColor')},
                        {type: 'break'},
-                       {type: 'button', id: 'leftpara', img: 'alignleft', 
hint: _UNO('.uno:LeftPara', '', true), uno: 'LeftPara'},
-                       {type: 'button', id: 'centerpara', img: 
'alignhorizontal', hint: _UNO('.uno:CenterPara', '', true), uno: 'CenterPara'},
-                       {type: 'button', id: 'rightpara', img: 'alignright', 
hint: _UNO('.uno:RigthPara', '', true), uno: 'RightPara'},
+                       {type: 'button', id: 'leftpara', img: 'alignleft', 
hint: _UNO('.uno:LeftPara', '', true),
+                               uno: {textCommand: 'LeftPara', objectCommand: 
'ObjectAlignLeft'}},
+                       {type: 'button', id: 'centerpara', img: 
'alignhorizontal', hint: _UNO('.uno:CenterPara', '', true),
+                               uno: {textCommand: 'CenterPara', objectCommand: 
'AlignCenter'}},
+                       {type: 'button', id: 'rightpara', img: 'alignright', 
hint: _UNO('.uno:RigthPara', '', true),
+                               uno: {textCommand: 'RightPara', objectCommand: 
'ObjectAlignRight'}},
                        {type: 'button', id: 'justifypara', img: 'alignblock', 
hint: _UNO('.uno:JustifyPara', '', true), uno: 'JustifyPara'},
                        {type: 'break'},
                        {type: 'button',  id: 'defaultbullet',  img: 'bullet', 
hint: _UNO('.uno:DefaultBullet', '', true), uno: 'DefaultBullet', disabled: 
true},
diff --git a/loleaflet/src/layer/tile/WriterTileLayer.js 
b/loleaflet/src/layer/tile/WriterTileLayer.js
index 526e7a0af..846516022 100644
--- a/loleaflet/src/layer/tile/WriterTileLayer.js
+++ b/loleaflet/src/layer/tile/WriterTileLayer.js
@@ -62,9 +62,15 @@ L.WriterTileLayer = L.TileLayer.extend({
                        {type: 'break'},
                        {type: 'button',  id: 'fontcolor', img: 'textcolor', 
hint: _UNO('.uno:FontColor')},
                        {type: 'button',  id: 'backcolor', img: 'backcolor', 
hint: _UNO('.uno:BackgroundColor')},
-                       {type: 'button',  id: 'leftpara',  img: 'alignleft', 
hint: _UNO('.uno:LeftPara', '', true), uno: 'LeftPara', unosheet: 'AlignLeft', 
disabled: true},
-                       {type: 'button',  id: 'centerpara',  img: 
'alignhorizontal', hint: _UNO('.uno:CenterPara', '', true), uno: 'CenterPara', 
unosheet: 'AlignHorizontalCenter', disabled: true},
-                       {type: 'button',  id: 'rightpara',  img: 'alignright', 
hint: _UNO('.uno:RightPara', '', true), uno: 'RightPara', unosheet: 
'AlignRight', disabled: true},
+                       {type: 'button',  id: 'leftpara',  img: 'alignleft', 
hint: _UNO('.uno:LeftPara', '', true),
+                               uno: {textCommand: 'LeftPara', objectCommand: 
'ObjectAlignLeft'},
+                               unosheet: 'AlignLeft', disabled: true},
+                       {type: 'button',  id: 'centerpara',  img: 
'alignhorizontal', hint: _UNO('.uno:CenterPara', '', true),
+                               uno: {textCommand: 'CenterPara', objectCommand: 
'AlignCenter'},
+                               unosheet: 'AlignHorizontalCenter', disabled: 
true},
+                       {type: 'button',  id: 'rightpara',  img: 'alignright', 
hint: _UNO('.uno:RightPara', '', true),
+                               uno: {textCommand: 'RightPara', objectCommand: 
'ObjectAlignRight'},
+                               unosheet: 'AlignRight', disabled: true},
                        {type: 'button',  id: 'justifypara',  img: 
'alignblock', hint: _UNO('.uno:JustifyPara', '', true), uno: 'JustifyPara', 
unosheet: '', disabled: true},
                        {type: 'break', id: 'breakspacing'},
                        {type: 'button',  id: 'defaultnumbering',  img: 
'numbering', hint: _UNO('.uno:DefaultNumbering', '', true),uno: 
'DefaultNumbering', disabled: true},
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to