loleaflet/src/control/Control.JSDialogBuilder.js |   32 ++++++++++++++++++++++-
 1 file changed, 31 insertions(+), 1 deletion(-)

New commits:
commit d7eaf756e8728b507b07e39c08051b446651d8cd
Author:     Michael Meeks <michael.me...@collabora.com>
AuthorDate: Mon Feb 3 17:32:06 2020 +0100
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Mon Feb 3 22:57:14 2020 +0100

    add class to unotoolbar buttons from parent id.
    
    Necessary to add 'parent' member to parsed JSON structures to
    allow walking up the hierarchy easily while building.
    
    Change-Id: I52da1ba415e07bb7fef60a1c667e8c46cb0d640a
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/87902
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>

diff --git a/loleaflet/src/control/Control.JSDialogBuilder.js 
b/loleaflet/src/control/Control.JSDialogBuilder.js
index 027934cb5..04a1abb0d 100644
--- a/loleaflet/src/control/Control.JSDialogBuilder.js
+++ b/loleaflet/src/control/Control.JSDialogBuilder.js
@@ -1177,10 +1177,27 @@ L.Control.JSDialogBuilder = L.Control.extend({
                return 'images/lc_' + cleanName.toLowerCase() + '.svg';
        },
 
+       // make a class identifier from parent's id by walking up the tree
+       _getParentId : function(it) {
+               while (it.parent && !it.id)
+                       it = it.parent;
+               if (it && it.id)
+                       return '-' + it.id;
+               else
+                       return '';
+       },
+
+       // Create a DOM node with an identifiable parent class
+       _createIdentifiable : function(type, classNames, parentContainer, data) 
{
+               return L.DomUtil.create(
+                       type, classNames + this._getParentId(data),
+                       parentContainer);
+       },
+
        _unoToolButton: function(parentContainer, data, builder) {
                var button = null;
 
-               var div = L.DomUtil.create('div', 'ui-content unospan', 
parentContainer);
+               var div = this._createIdentifiable('div', 'ui-content unospan', 
parentContainer, data);
 
                if (data.command) {
                        var id = data.command.substr('.uno:'.length);
@@ -1530,9 +1547,22 @@ L.Control.JSDialogBuilder = L.Control.extend({
                builder._explorableMenu(parentContainer, title, data.children, 
builder, content, data.id);
        },
 
+       // link each node to its parent, should do one recursive descent
+       _parentize: function(data, parent) {
+               if (data.parent)
+                       return;
+               if (data.children !== undefined) {
+                       for (var idx in data.children) {
+                               this._parentize(data.children[idx], data);
+                       }
+               }
+               data.parent = parent;
+       },
+
        build: function(parent, data) {
                for (var childIndex in data) {
                        var childData = data[childIndex];
+                       this._parentize(childData);
                        var childType = childData.type;
                        var processChildren = true;
                        var needsToCreateContainer =
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to