bundled/include/LibreOfficeKit/LibreOfficeKit.h      |   42 --
 bundled/include/LibreOfficeKit/LibreOfficeKit.hxx    |  105 -----
 bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h |   23 -
 bundled/include/LibreOfficeKit/LibreOfficeKitInit.h  |    1 
 common/Message.hpp                                   |    4 
 kit/ChildSession.cpp                                 |  106 +----
 kit/ChildSession.hpp                                 |   12 
 kit/Kit.cpp                                          |  112 ------
 kit/KitHelper.hpp                                    |    4 
 loleaflet/build/deps.js                              |    3 
 loleaflet/debug/document/loleaflet.html              |    2 
 loleaflet/dist/loleaflet.css                         |   17 
 loleaflet/main.js                                    |    3 
 loleaflet/src/control/Control.Dialog.js              |    6 
 loleaflet/src/control/Control.LokDialog.js           |  349 -------------------
 loleaflet/src/control/Control.Menubar.js             |   21 -
 loleaflet/src/control/Toolbar.js                     |   14 
 loleaflet/src/core/Socket.js                         |   14 
 loleaflet/src/layer/tile/TileLayer.js                |   52 --
 tools/KitClient.cpp                                  |    2 
 wsd/ClientSession.cpp                                |   11 
 wsd/DocumentBroker.cpp                               |   40 --
 wsd/DocumentBroker.hpp                               |    2 
 wsd/protocol.txt                                     |    4 
 24 files changed, 40 insertions(+), 909 deletions(-)

New commits:
commit 82d5d38708088126391c700b11c92578f6dd1502
Author: Jan Holesovsky <ke...@collabora.com>
Date:   Thu Dec 21 11:02:38 2017 +0100

    Revert the incomplete dialog tunneling, the API has changed completely.
    
    Change-Id: I8ad2005bffd43ea0ef9bdf6c2e76caa9debd7041
    Reviewed-on: https://gerrit.libreoffice.org/46894
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>
    Tested-by: Michael Meeks <michael.me...@collabora.com>

diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKit.h 
b/bundled/include/LibreOfficeKit/LibreOfficeKit.h
index 14824821..0633f46f 100644
--- a/bundled/include/LibreOfficeKit/LibreOfficeKit.h
+++ b/bundled/include/LibreOfficeKit/LibreOfficeKit.h
@@ -266,48 +266,6 @@ struct _LibreOfficeKitDocumentClass
                        int* pArray,
                        size_t nSize);
 
-    /// Paints dialog with given dialog id to the buffer
-    /// @see lok::Document::paintDialog().
-    void (*paintDialog) (LibreOfficeKitDocument* pThis, const char* pDialogId,
-                         unsigned char* pBuffer,
-                         const int x, const int y,
-                         const int width, const int height);
-
-    /// Get info about dialog with given dialog id
-    /// @see lok::Document::getDialogInfo().
-    void (*getDialogInfo) (LibreOfficeKitDocument* pThis, const char* 
pDialogId,
-                           char** pDialogTitle, int* pWidth, int* pHeight);
-
-    /// @see lok::Document::paintActiveFloatingWindow().
-    void (*paintActiveFloatingWindow) (LibreOfficeKitDocument* pThis, const 
char* pDialogId, unsigned char* pBuffer, int* nWidth, int* nHeight);
-
-    /// @see lok::Document::postDialogKeyEvent().
-    void (*postDialogKeyEvent) (LibreOfficeKitDocument* pThis,
-                                const char* pDialogId,
-                                int nType,
-                                int nCharCode,
-                                int nKeyCode);
-
-    /// @see lok::Document::postDialogMouseEvent().
-    void (*postDialogMouseEvent) (LibreOfficeKitDocument* pThis,
-                                  const char* pDialogId,
-                                  int nType,
-                                  int nX,
-                                  int nY,
-                                  int nCount,
-                                  int nButtons,
-                                  int nModifier);
-
-    /// @see lok::Document::postDialogChildMouseEvent().
-    void (*postDialogChildMouseEvent) (LibreOfficeKitDocument* pThis,
-                                       const char* pDialogId,
-                                       int nType,
-                                       int nX,
-                                       int nY,
-                                       int nCount,
-                                       int nButtons,
-                                       int nModifier);
-
 #endif // defined LOK_USE_UNSTABLE_API || defined LIBO_INTERNAL_ONLY
 };
 
diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx 
b/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx
index 19e121fe..0781e7d1 100644
--- a/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx
+++ b/bundled/include/LibreOfficeKit/LibreOfficeKit.hxx
@@ -156,65 +156,6 @@ public:
     }
 
     /**
-     * Renders a dialog with give dialog id and writes the width and height of 
the rendered dialog
-     *
-     * Client must truncate pBuffer according to the nWidth and nHeight 
returned after the call.
-     *
-     * @param pDialogId Unique dialog id to be painted
-     * @param pBuffer Buffer with enough memory allocated to render any dialog
-     * @param x x-coordinate from where the dialog should start painting
-     * @param y y-coordinate from where the dialog should start painting
-     * @param width The width of the dialog image to be painted
-     * @param height The height of the dialog image to be painted
-     */
-    void paintDialog(const char* pDialogId,
-                     unsigned char* pBuffer,
-                     const int x,
-                     const int y,
-                     const int width,
-                     const int height)
-    {
-        return mpDoc->pClass->paintDialog(mpDoc, pDialogId, pBuffer,
-                                          x, y, width, height);
-    }
-
-    /* Get info about dialog with given dialog id
-     *
-     * @param pDialogId Unique dialog id for which to get info about
-     * @param pDialogTitle Pointer to pointer pointing to string containing the
-     * dialog title. Caller should the pointer to allocated string themselves.
-     * @param pWidth The width of the dialog
-     * @param pHeight The height of the dialog
-     */
-    void getDialogInfo(const char* pDialogId,
-                       char** pDialogTitle,
-                       int& pWidth,
-                       int& pHeight)
-    {
-        return mpDoc->pClass->getDialogInfo(mpDoc, pDialogId, pDialogTitle, 
&pWidth, &pHeight);
-
-    }
-
-    /**
-     * Renders the active floating window of a dialog
-     *
-     * Client must truncate pBuffer according to the nWidth and nHeight 
returned after the call.
-     *
-     * @param pDialogId Unique dialog id
-     * @param pBuffer Buffer with enough memory allocated to render any dialog
-     * @param nWidth output parameter returning the width of the rendered 
dialog.
-     * @param nHeight output parameter returning the height of the rendered 
dialog
-     */
-    void paintActiveFloatingWindow(const char* pDialogId,
-                                   unsigned char* pBuffer,
-                                   int& nWidth,
-                                   int& nHeight)
-    {
-        return mpDoc->pClass->paintActiveFloatingWindow(mpDoc, pDialogId, 
pBuffer,
-                                                        &nWidth, &nHeight);
-    }
-
-    /**
      * Gets the tile mode: the pixel format used for the pBuffer of 
paintTile().
      *
      * @return an element of the LibreOfficeKitTileMode enum.
@@ -280,19 +221,6 @@ public:
     }
 
     /**
-     * Posts a keyboard event to the dialog
-     *
-     * @param pDialogId Dialog id on which key event should be posted
-     * @param nType Event type, like press or release.
-     * @param nCharCode contains the Unicode character generated by this event 
or 0
-     * @param nKeyCode contains the integer code representing the key of the 
event (non-zero for control keys)
-     */
-    void postDialogKeyEvent(const char* pDialogId, int nType, int nCharCode, 
int nKeyCode)
-    {
-        mpDoc->pClass->postDialogKeyEvent(mpDoc, pDialogId, nType, nCharCode, 
nKeyCode);
-    }
-
-    /**
      * Posts a mouse event to the document.
      *
      * @param nType Event type, like down, move or up.
@@ -308,39 +236,6 @@ public:
     }
 
     /**
-     * Posts a mouse event to the dialog with given id.
-     *
-     * @param pDialogId Dialog id where mouse event is to be posted
-     * @param nType Event type, like down, move or up.
-     * @param nX horizontal position in document coordinates
-     * @param nY vertical position in document coordinates
-     * @param nCount number of clicks: 1 for single click, 2 for double click
-     * @param nButtons: which mouse buttons: 1 for left, 2 for middle, 4 right
-     * @param nModifier: which keyboard modifier: (see include/vcl/vclenum.hxx 
for possible values)
-     */
-    void postDialogMouseEvent(const char* pDialogId, int nType, int nX, int 
nY, int nCount, int nButtons, int nModifier)
-    {
-        mpDoc->pClass->postDialogMouseEvent(mpDoc, pDialogId, nType, nX, nY, 
nCount, nButtons, nModifier);
-    }
-
-    /**
-     * Posts a mouse event to the child of a dialog with given id.
-     *
-     * @param aDialogId Dialog id
-     * @param nType Event type, like down, move or up.
-     * @param nX horizontal position in document coordinates
-     * @param nY vertical position in document coordinates
-     * @param nCount number of clicks: 1 for single click, 2 for double click
-     * @param nButtons: which mouse buttons: 1 for left, 2 for middle, 4 right
-     * @param nModifier: which keyboard modifier: (see include/vcl/vclenum.hxx 
for possible values)
-     */
-    void postDialogChildMouseEvent(const char* pDialogId, int nType, int nX, 
int nY, int nCount, int nButtons, int nModifier)
-    {
-        mpDoc->pClass->postDialogChildMouseEvent(mpDoc, pDialogId, nType, nX, 
nY, nCount, nButtons, nModifier);
-    }
-
-
-    /**
      * Posts an UNO command to the document.
      *
      * Example argument string:
diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h 
b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
index 62b9faf7..451ed2c9 100644
--- a/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
+++ b/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
@@ -522,29 +522,6 @@ typedef enum
      * Here all aproperties are same as described in svxruler.
      */
     LOK_CALLBACK_RULER_UPDATE = 35,
-    /**
-     * Dialog invalidation
-     */
-    LOK_CALLBACK_DIALOG = 36,
-
-    /**
-     * Invalidation corresponding to dialog's children.
-     * Eg: Floating window etc.
-     *
-     * Payload example:
-     * {
-     *   "dialogID": "SpellDialog",
-     *   "action": "close"
-     * }
-     *
-     * - dialogID is the UNO command of the dialog
-     * - action can be
-     *   - close, means dialog child window is closed now
-     *   - invalidate, means dialog child window is invalidated
-     *     It also means that dialog child window is created if it's the first
-     *     invalidate
-     */
-    LOK_CALLBACK_DIALOG_CHILD = 37
 }
 LibreOfficeKitCallbackType;
 
diff --git a/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h 
b/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h
index f95ee496..a0c111a9 100644
--- a/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h
+++ b/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h
@@ -234,6 +234,7 @@ static void *lok_dlopen( const char *install_path, char ** 
_imp_lib )
         }
     }
 #else
+    (void)install_path;
     imp_lib = strdup("the app executable");
     dlhandle = RTLD_MAIN_ONLY;
 #endif
diff --git a/common/Message.hpp b/common/Message.hpp
index bfd38cb7..99ccd77a 100644
--- a/common/Message.hpp
+++ b/common/Message.hpp
@@ -130,9 +130,7 @@ private:
     {
         if (_tokens[0] == "tile:" ||
             _tokens[0] == "tilecombine:" ||
-            _tokens[0] == "renderfont:" ||
-            _tokens[0] == "dialogpaint:" ||
-            _tokens[0] == "dialogchildpaint:")
+            _tokens[0] == "renderfont:")
         {
             return Type::Binary;
         }
diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp
index 71feb376..d98e0947 100644
--- a/kit/ChildSession.cpp
+++ b/kit/ChildSession.cpp
@@ -219,10 +219,7 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
                tokens[0] == "paste" ||
                tokens[0] == "insertfile" ||
                tokens[0] == "key" ||
-               tokens[0] == "dialogkey" ||
                tokens[0] == "mouse" ||
-               tokens[0] == "dialogmouse" ||
-               tokens[0] == "dialogchildmouse" ||
                tokens[0] == "uno" ||
                tokens[0] == "selecttext" ||
                tokens[0] == "selectgraphic" ||
@@ -261,23 +258,11 @@ bool ChildSession::_handleInput(const char *buffer, int 
length)
         }
         else if (tokens[0] == "key")
         {
-            return keyEvent(buffer, length, tokens, 
LokEventTargetEnum::Document);
-        }
-        else if (tokens[0] == "dialogkey")
-        {
-            return keyEvent(buffer, length, tokens, 
LokEventTargetEnum::Dialog);
+            return keyEvent(buffer, length, tokens);
         }
         else if (tokens[0] == "mouse")
         {
-            return mouseEvent(buffer, length, tokens, 
LokEventTargetEnum::Document);
-        }
-        else if (tokens[0] == "dialogmouse")
-        {
-            return mouseEvent(buffer, length, tokens, 
LokEventTargetEnum::Dialog);
-        }
-        else if (tokens[0] == "dialogchildmouse")
-        {
-            return mouseEvent(buffer, length, tokens, 
LokEventTargetEnum::DialogChild);
+            return mouseEvent(buffer, length, tokens);
         }
         else if (tokens[0] == "uno")
         {
@@ -721,28 +706,17 @@ bool ChildSession::insertFile(const char* /*buffer*/, int 
/*length*/, const std:
     return true;
 }
 
-bool ChildSession::keyEvent(const char* /*buffer*/, int /*length*/,
-                            const std::vector<std::string>& tokens,
-                            const LokEventTargetEnum target)
+bool ChildSession::keyEvent(const char* /*buffer*/, int /*length*/, const 
std::vector<std::string>& tokens)
 {
     int type, charcode, keycode;
-    std::string dialogId;
-    unsigned counter = 1;
-    unsigned minTotal = 4; // cmdname, type, char, key are strictly required
-    if (target == LokEventTargetEnum::Dialog || target == 
LokEventTargetEnum::DialogChild)
-    {
-        getTokenString(tokens[counter++], "dialogid", dialogId);
-        minTotal++; // other params still necessarily required
-    }
-
-    if (tokens.size() != minTotal ||
-        !getTokenKeyword(tokens[counter++], "type",
+    if (tokens.size() != 4 ||
+        !getTokenKeyword(tokens[1], "type",
                          {{"input", LOK_KEYEVENT_KEYINPUT}, {"up", 
LOK_KEYEVENT_KEYUP}},
                          type) ||
-        !getTokenInteger(tokens[counter++], "char", charcode) ||
-        !getTokenInteger(tokens[counter++], "key", keycode))
+        !getTokenInteger(tokens[2], "char", charcode) ||
+        !getTokenInteger(tokens[3], "key", keycode))
     {
-        sendTextFrame("error: cmd=" + std::string(tokens[0]) + "  
kind=syntax");
+        sendTextFrame("error: cmd=key kind=syntax");
         return false;
     }
 
@@ -763,20 +737,15 @@ bool ChildSession::keyEvent(const char* /*buffer*/, int 
/*length*/,
     }
 
     std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
-    if (target == LokEventTargetEnum::Document)
-    {
-        getLOKitDocument()->setView(_viewId);
-        getLOKitDocument()->postKeyEvent(type, charcode, keycode);
-    }
-    else if (!dialogId.empty())
-        getLOKitDocument()->postDialogKeyEvent(dialogId.c_str(), type, 
charcode, keycode);
+
+    getLOKitDocument()->setView(_viewId);
+
+    getLOKitDocument()->postKeyEvent(type, charcode, keycode);
 
     return true;
 }
 
-bool ChildSession::mouseEvent(const char* /*buffer*/, int /*length*/,
-                              const std::vector<std::string>& tokens,
-                              const LokEventTargetEnum target)
+bool ChildSession::mouseEvent(const char* /*buffer*/, int /*length*/, const 
std::vector<std::string>& tokens)
 {
     int type, x, y, count;
     bool success = true;
@@ -785,59 +754,38 @@ bool ChildSession::mouseEvent(const char* /*buffer*/, int 
/*length*/,
     int buttons = 1; // left button
     int modifier = 0;
 
-    std::string dialogId;
-    unsigned counter = 1;
-    unsigned minTotal = 5; // cmdname, type, x, y, count are strictly required
-    if (target == LokEventTargetEnum::Dialog || target == 
LokEventTargetEnum::DialogChild)
-    {
-        getTokenString(tokens[counter++], "dialogid", dialogId);
-        minTotal++; // other params still necessarily required
-    }
-
-    if (tokens.size() < minTotal ||
-        !getTokenKeyword(tokens[counter++], "type",
+    if (tokens.size() < 5 ||
+        !getTokenKeyword(tokens[1], "type",
                          {{"buttondown", LOK_MOUSEEVENT_MOUSEBUTTONDOWN},
                           {"buttonup", LOK_MOUSEEVENT_MOUSEBUTTONUP},
                           {"move", LOK_MOUSEEVENT_MOUSEMOVE}},
                          type) ||
-        !getTokenInteger(tokens[counter++], "x", x) ||
-        !getTokenInteger(tokens[counter++], "y", y) ||
-        !getTokenInteger(tokens[counter++], "count", count))
+        !getTokenInteger(tokens[2], "x", x) ||
+        !getTokenInteger(tokens[3], "y", y) ||
+        !getTokenInteger(tokens[4], "count", count))
     {
         success = false;
     }
 
     // compatibility with older loleaflets
-    if (success && tokens.size() > counter && 
!getTokenInteger(tokens[counter++], "buttons", buttons))
+    if (success && tokens.size() > 5 && !getTokenInteger(tokens[5], "buttons", 
buttons))
         success = false;
 
     // compatibility with older loleaflets
-    if (success && tokens.size() > counter && 
!getTokenInteger(tokens[counter++], "modifier", modifier))
+    if (success && tokens.size() > 6 && !getTokenInteger(tokens[6], 
"modifier", modifier))
         success = false;
 
     if (!success)
     {
-        sendTextFrame("error: cmd=" +  std::string(tokens[0]) + " 
kind=syntax");
+        sendTextFrame("error: cmd=mouse kind=syntax");
         return false;
     }
 
     std::unique_lock<std::mutex> lock(_docManager.getDocumentMutex());
 
-    switch (target)
-    {
-    case LokEventTargetEnum::Document:
-        getLOKitDocument()->setView(_viewId);
-        getLOKitDocument()->postMouseEvent(type, x, y, count, buttons, 
modifier);
-        break;
-    case LokEventTargetEnum::Dialog:
-        getLOKitDocument()->postDialogMouseEvent(dialogId.c_str(), type, x, y, 
count, buttons, modifier);
-        break;
-    case LokEventTargetEnum::DialogChild:
-        getLOKitDocument()->postDialogChildMouseEvent(dialogId.c_str(), type, 
x, y, count, buttons, modifier);
-        break;
-    default:
-        assert(false && "Unsupported mouse target type");
-    }
+    getLOKitDocument()->setView(_viewId);
+
+    getLOKitDocument()->postMouseEvent(type, x, y, count, buttons, modifier);
 
     return true;
 }
@@ -1351,12 +1299,6 @@ void ChildSession::loKitCallback(const int type, const 
std::string& payload)
     case LOK_CALLBACK_RULER_UPDATE:
         sendTextFrame("rulerupdate: " + payload);
         break;
-    case LOK_CALLBACK_DIALOG:
-        sendTextFrame("dialog: " + payload);
-        break;
-    case LOK_CALLBACK_DIALOG_CHILD:
-        sendTextFrame("dialogchild: " + payload);
-        break;
     default:
         LOG_ERR("Unknown callback event (" << type << "): " << payload);
     }
diff --git a/kit/ChildSession.hpp b/kit/ChildSession.hpp
index 82c5b541..c3af96ec 100644
--- a/kit/ChildSession.hpp
+++ b/kit/ChildSession.hpp
@@ -25,13 +25,6 @@
 
 class ChildSession;
 
-enum class LokEventTargetEnum
-{
-    Document,
-    Dialog,
-    DialogChild
-};
-
 /// An abstract interface that defines the
 /// DocumentManager interface and functionality.
 class IDocumentManager
@@ -181,9 +174,8 @@ private:
     bool getTextSelection(const char* buffer, int length, const 
std::vector<std::string>& tokens);
     bool paste(const char* buffer, int length, const std::vector<std::string>& 
tokens);
     bool insertFile(const char* buffer, int length, const 
std::vector<std::string>& tokens);
-    bool keyEvent(const char* buffer, int length, const 
std::vector<std::string>& tokens, const LokEventTargetEnum target);
-    bool dialogKeyEvent(const char* buffer, int length, const 
std::vector<std::string>& tokens);
-    bool mouseEvent(const char* buffer, int length, const 
std::vector<std::string>& tokens, const LokEventTargetEnum target);
+    bool keyEvent(const char* buffer, int length, const 
std::vector<std::string>& tokens);
+    bool mouseEvent(const char* buffer, int length, const 
std::vector<std::string>& tokens);
     bool unoCommand(const char* buffer, int length, const 
std::vector<std::string>& tokens);
     bool selectText(const char* buffer, int length, const 
std::vector<std::string>& tokens);
     bool selectGraphic(const char* buffer, int length, const 
std::vector<std::string>& tokens);
diff --git a/kit/Kit.cpp b/kit/Kit.cpp
index 1a7d87c1..3bb5e373 100644
--- a/kit/Kit.cpp
+++ b/kit/Kit.cpp
@@ -846,111 +846,6 @@ public:
         ws->sendFrame(output.data(), output.size(), WebSocket::FRAME_BINARY);
     }
 
-    void renderDialog(const std::vector<std::string>& tokens, const 
std::shared_ptr<LOOLWebSocket>& ws)
-    {
-        assert(ws && "Expected a non-null websocket.");
-
-        const bool child = tokens[0] == "dialogchild";
-
-        std::unique_lock<std::mutex> lock(_documentMutex);
-        if (!_loKitDocument)
-        {
-            LOG_ERR("Dialog rendering requested before loading document.");
-            return;
-        }
-
-        if (_loKitDocument->getViewsCount() <= 0)
-        {
-            LOG_ERR("Dialog rendering requested without views.");
-            return;
-        }
-
-        int startX = 0, startY = 0;
-        int bufferWidth = 800, bufferHeight = 600; // hopefully, this is big 
enough
-        std::string paintRectangle;
-        // find the rectangle to paint, if specified
-        if (tokens.size() >= 3 && getTokenString(tokens[2], "rectangle", 
paintRectangle))
-        {
-            const std::vector<std::string> rectParts = 
LOOLProtocol::tokenize(paintRectangle.c_str(), paintRectangle.length(), ',');
-            startX = std::atoi(rectParts[0].c_str());
-            startY = std::atoi(rectParts[1].c_str());
-            bufferWidth = std::atoi(rectParts[2].c_str());
-            bufferHeight = std::atoi(rectParts[3].c_str());
-        }
-
-        size_t pixmapDataSize = 4 * bufferWidth * bufferHeight;
-        std::vector<unsigned char> pixmap(pixmapDataSize);
-
-        char* pDialogTitle = nullptr;
-        int width = bufferWidth;
-        int height = bufferHeight;
-        std::string response;
-        if (child)
-        {
-            Timestamp timestamp;
-            _loKitDocument->paintActiveFloatingWindow(tokens[1].c_str(), 
pixmap.data(), width, height);
-            const auto elapsed = timestamp.elapsed();
-            const double area = width * height;
-            LOG_TRC("paintActiveFloatingWindow for " << tokens[1] << " 
returned floating window "
-                    << width << "X" << height << " "
-                    << "rendered in " << (elapsed/1000.)
-                    << "ms (" << area / elapsed << " MP/s).");
-
-            response = "dialogchildpaint: id=" + tokens[1] + " width=" + 
std::to_string(width) + " height=" + std::to_string(height) + "\n";
-        }
-        else
-        {
-            Timestamp timestamp;
-            _loKitDocument->paintDialog(tokens[1].c_str(), pixmap.data(), 
startX, startY, width, height);
-            const auto elapsed = timestamp.elapsed();
-
-            int dialogWidth = 0;
-            int dialogHeight = 0;
-            _loKitDocument->getDialogInfo(tokens[1].c_str(), &pDialogTitle, 
dialogWidth, dialogHeight);
-
-            std::string encodedDialogTitle;
-            if (pDialogTitle)
-            {
-                std::string aDialogTitle(pDialogTitle);
-                URI::encode(aDialogTitle, "", encodedDialogTitle);
-                free(pDialogTitle);
-            }
-
-            // rendered width, height cannot be less than the dialog width, 
height
-            width = std::min(width, dialogWidth);
-            height = std::min(height, dialogHeight);
-            const double area = width * height;
-
-            LOG_TRC("paintDialog for " << tokens[1] << " returned " << width 
<< "X" << height
-                    << "@(" << startX << "," << startY << ")"
-                    << "and rendered in " << (elapsed/1000.)
-                    << "ms (" << area / elapsed << " MP/s).");
-
-            response = "dialogpaint: id=" + tokens[1] + " title=" + 
encodedDialogTitle +
-                " dialogwidth=" + std::to_string(dialogWidth) + " 
dialogheight=" + std::to_string(dialogHeight);
-
-            if (!paintRectangle.empty())
-                response += " rectangle=" + paintRectangle;
-
-            response += "\n";
-        }
-
-        std::vector<char> output;
-        output.reserve(response.size() + pixmapDataSize);
-        output.resize(response.size());
-        std::memcpy(output.data(), response.data(), response.size());
-
-        // TODO: use png cache for dialogs too
-        if (!Png::encodeSubBufferToPNG(pixmap.data(), 0, 0, width, height, 
bufferWidth, bufferHeight, output, LOK_TILEMODE_RGBA))
-        {
-            LOG_ERR("Failed to encode into PNG.");
-            return;
-        }
-
-        LOG_TRC("Sending response (" << output.size() << " bytes) for: " << 
response);
-        ws->sendFrame(output.data(), output.size(), WebSocket::FRAME_BINARY);
-    }
-
     void renderCombinedTiles(const std::vector<std::string>& tokens, const 
std::shared_ptr<LOOLWebSocket>& ws)
     {
         assert(ws && "Expected a non-null websocket.");
@@ -1011,7 +906,7 @@ public:
         const auto mode = 
static_cast<LibreOfficeKitTileMode>(_loKitDocument->getTileMode());
 
         std::vector<char> output;
-        output.reserve(pixmapSize);
+        output.reserve(pixmapWidth * pixmapHeight * 4);
 
         size_t tileIndex = 0;
         for (Util::Rectangle& tileRect : tileRecs)
@@ -1775,10 +1670,6 @@ private:
                 {
                     renderCombinedTiles(tokens, _ws);
                 }
-                else if (tokens[0] == "dialog" || tokens[0] == "dialogchild")
-                {
-                    renderDialog(tokens, _ws);
-                }
                 else if (LOOLProtocol::getFirstToken(tokens[0], '-') == 
"child")
                 {
                     forwardToChild(tokens[0], input);
@@ -2230,7 +2121,6 @@ void lokit_main(const std::string& childRoot,
                         TerminationFlag = true;
                     }
                     else if (tokens[0] == "tile" || tokens[0] == "tilecombine" 
|| tokens[0] == "canceltiles" ||
-                             tokens[0] == "dialog" || tokens[0] == 
"dialogchild" ||
                              LOOLProtocol::getFirstToken(tokens[0], '-') == 
"child")
                     {
                         if (document)
diff --git a/kit/KitHelper.hpp b/kit/KitHelper.hpp
index dccf2741..efb0d5cb 100644
--- a/kit/KitHelper.hpp
+++ b/kit/KitHelper.hpp
@@ -113,10 +113,6 @@ namespace LOKitHelper
             return "INVALIDATE_HEADER";
         case LOK_CALLBACK_CELL_ADDRESS:
             return "CELL_ADDRESS";
-        case LOK_CALLBACK_DIALOG:
-            return "DIALOG";
-        case LOK_CALLBACK_DIALOG_CHILD:
-            return "DIALOG_CHILD";
 
        }
 
diff --git a/loleaflet/build/deps.js b/loleaflet/build/deps.js
index a3009c56..7044f43d 100644
--- a/loleaflet/build/deps.js
+++ b/loleaflet/build/deps.js
@@ -357,8 +357,7 @@ var deps = {
 
        ControlDialog: {
                src: ['control/Control.js',
-                     'control/Control.LokDialog.js',
-                     'control/Control.AlertDialog.js'],
+                     'control/Control.Dialog.js'],
                heading: 'Controls',
                desc: 'Handles vex dialogs for displaying alerts'
        },
diff --git a/loleaflet/debug/document/loleaflet.html 
b/loleaflet/debug/document/loleaflet.html
index ff9b80f4..70d923f6 100644
--- a/loleaflet/debug/document/loleaflet.html
+++ b/loleaflet/debug/document/loleaflet.html
@@ -125,7 +125,7 @@
 
     ////// Controls /////
     map.addControl(L.control.scroll());
-    map.addControl(L.control.alertDialog());
+    map.addControl(L.control.dialog());
     map.addControl(L.control.partsPreview());
     map.addControl(L.control.tabs());
     map.addControl(L.control.columnHeader());
diff --git a/loleaflet/dist/loleaflet.css b/loleaflet/dist/loleaflet.css
index 48456535..a0604c5f 100644
--- a/loleaflet/dist/loleaflet.css
+++ b/loleaflet/dist/loleaflet.css
@@ -333,20 +333,3 @@ body {
        font: bold 18px 'Lucida Console', Monaco, monospace;
        text-indent: 1px;
 }
-
-.lokdialog_container.ui-dialog.ui-widget-content {
-        padding: 0px;
-       overflow: hidden;
-       width: auto;
-       height: auto;
-       border: none;
-       background-color: transparent;
-}
-
-.lokdialog.ui-dialog-content.ui-widget-content {
-        padding: 0px;
-}
-
-.lokdialog_canvas {
-        display: block; /* required to remove all borders around canvas 
element */
-}
diff --git a/loleaflet/main.js b/loleaflet/main.js
index ca143017..a780f866 100644
--- a/loleaflet/main.js
+++ b/loleaflet/main.js
@@ -118,8 +118,7 @@ global.map = map;
 
 ////// Controls /////
 map.addControl(L.control.scroll());
-map.addControl(L.control.alertDialog());
-map.addControl(L.control.lokDialog());
+map.addControl(L.control.dialog());
 map.addControl(L.control.partsPreview());
 map.addControl(L.control.tabs());
 map.addControl(L.control.columnHeader());
diff --git a/loleaflet/src/control/Control.AlertDialog.js 
b/loleaflet/src/control/Control.Dialog.js
similarity index 89%
rename from loleaflet/src/control/Control.AlertDialog.js
rename to loleaflet/src/control/Control.Dialog.js
index 4b937200..daad5e6e 100644
--- a/loleaflet/src/control/Control.AlertDialog.js
+++ b/loleaflet/src/control/Control.Dialog.js
@@ -3,7 +3,7 @@
  */
 
 /* global vex */
-L.Control.AlertDialog = L.Control.extend({
+L.Control.Dialog = L.Control.extend({
        onAdd: function (map) {
                // TODO: Better distinction between warnings and errors
                map.on('error', this._onError, this);
@@ -47,6 +47,6 @@ L.Control.AlertDialog = L.Control.extend({
        }
 });
 
-L.control.alertDialog = function (options) {
-       return new L.Control.AlertDialog(options);
+L.control.dialog = function (options) {
+       return new L.Control.Dialog(options);
 };
diff --git a/loleaflet/src/control/Control.LokDialog.js 
b/loleaflet/src/control/Control.LokDialog.js
deleted file mode 100644
index f64c19e4..00000000
--- a/loleaflet/src/control/Control.LokDialog.js
+++ /dev/null
@@ -1,349 +0,0 @@
-/*
- * L.Control.LokDialog used for displaying LOK dialogs
- */
-
-/* global vex $ map */
-L.Control.LokDialog = L.Control.extend({
-       onAdd: function (map) {
-               map.on('dialogpaint', this._onDialogPaint, this);
-               map.on('dialogchildpaint', this._onDialogChildPaint, this);
-               map.on('dialogchild', this._onDialogChildMsg, this);
-               map.on('dialog', this._onDialogMsg, this);
-               map.on('opendialog', this._openDialog, this);
-       },
-
-       _dialogs: {},
-
-       _isOpen: function(dialogId) {
-               return this._dialogs[dialogId] &&
-                       this._dialogs[dialogId].open &&
-                       $('#' + dialogId).length > 0;
-       },
-
-       _onDialogMsg: function(e) {
-               e.dialogId = e.dialogId.replace('.uno:', '');
-               if (e.action === 'invalidate') {
-                       // ignore any invalidate callbacks when we have closed 
the dialog
-                       if (this._isOpen(e.dialogId)) {
-                               this._map.sendDialogCommand(e.dialogId, 
e.rectangle);
-                       }
-               } else if (e.action === 'cursor_invalidate') {
-                       if (this._isOpen(e.dialogId) && !!e.rectangle) {
-                               var rectangle = e.rectangle.split(',');
-                               var x = parseInt(rectangle[0]);
-                               var y = parseInt(rectangle[1]);
-                               var height = parseInt(rectangle[3]);
-
-                               $('#' + e.dialogId + '-cursor').css({height: 
height});
-                               // set the position of the lokdialog-cursor
-                               $(this._dialogs[e.dialogId].cursor).css({left: 
x, top: y});
-                       }
-               } else if (e.action === 'cursor_visible') {
-                       var visible = e.visible === 'true';
-                       if (visible)
-                               $('#' + e.dialogId + '-cursor').css({display: 
'block'});
-                       else
-                               $('#' + e.dialogId + '-cursor').css({display: 
'none'});
-               } else if (e.action === 'close') {
-                       this._onDialogClose(e.dialogId);
-               }
-       },
-
-       _openDialog: function(e) {
-               e.dialogId = e.dialogId.replace('.uno:', '');
-               this._dialogs[e.dialogId] = {open: true};
-
-               this._map.sendDialogCommand(e.dialogId);
-       },
-
-       _launchDialogCursor: function(dialogId) {
-               if (!this._isOpen(dialogId))
-                       return;
-
-               this._dialogs[dialogId].cursor = L.DomUtil.create('div', 
'leaflet-cursor-container', L.DomUtil.get(dialogId));
-               var cursor = L.DomUtil.create('div', 'leaflet-cursor 
lokdialog-cursor', this._dialogs[dialogId].cursor);
-               cursor.id = dialogId + '-cursor';
-               L.DomUtil.addClass(cursor, 'blinking-cursor');
-       },
-
-       _launchDialog: function(dialogId, width, height) {
-               var canvas = '<div class="lokdialog" style="padding: 0px; 
margin: 0px; overflow: hidden;" id="' + dialogId + '">' +
-                   '<canvas class="lokdialog_canvas" tabindex="0" id="' + 
dialogId + '-canvas" width="' + width + 'px" height="' + height + 
'px"></canvas>' +
-                   '</div>';
-               $(document.body).append(canvas);
-               var that = this;
-               $('#' + dialogId).dialog({
-                       width: width,
-                       height: 'auto',
-                       title: 'LOK Dialog', // TODO: Get the 'real' dialog 
title from the backend
-                       modal: false,
-                       closeOnEscape: true,
-                       resizable: false,
-                       dialogClass: 'lokdialog_container',
-                       close: function() {
-                               that._onDialogClose(dialogId);
-                       }
-               });
-
-               // don't make 'TAB' focus on this button; we want to cycle 
focus in the lok dialog with each TAB
-               $('.lokdialog_container 
button.ui-dialog-titlebar-close').attr('tabindex', '-1').blur();
-
-               // attach the mouse/key events
-               $('#' + dialogId + '-canvas').on('mousedown', function(e) {
-                       var buttons = 0;
-                       buttons |= e.button === map['mouse'].JSButtons.left ? 
map['mouse'].LOButtons.left : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.middle ? 
map['mouse'].LOButtons.middle : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.right ? 
map['mouse'].LOButtons.right : 0;
-                       var modifier = 0;
-                       that._postDialogMouseEvent('buttondown', dialogId, 
e.offsetX, e.offsetY, 1, buttons, modifier);
-               });
-
-               $('#' + dialogId + '-canvas').on('mouseup', function(e) {
-                       var buttons = 0;
-                       buttons |= e.button === map['mouse'].JSButtons.left ? 
map['mouse'].LOButtons.left : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.middle ? 
map['mouse'].LOButtons.middle : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.right ? 
map['mouse'].LOButtons.right : 0;
-                       var modifier = 0;
-                       that._postDialogMouseEvent('buttonup', dialogId, 
e.offsetX, e.offsetY, 1, buttons, modifier);
-               });
-
-               $('#' + dialogId + '-canvas').on('keyup keypress keydown', 
function(e) {
-                       e.dialogId = dialogId;
-                       that._handleDialogKeyEvent(e);
-               });
-
-               $('#' + dialogId + '-canvas').on('contextmenu', function() {
-                       return false;
-               });
-
-               // set the dialog's cursor
-               this._launchDialogCursor(dialogId);
-
-               if (!this._dialogs[dialogId] || !this._dialogs[dialogId].open)
-                       this._dialogs[dialogId] = { open: true };
-       },
-
-       _postDialogMouseEvent: function(type, dialogid, x, y, count, buttons, 
modifier) {
-               if (!dialogid.startsWith('.uno:'))
-                       dialogid = '.uno:' + dialogid;
-
-               this._map._socket.sendMessage('dialogmouse dialogid=' + 
dialogid +  ' type=' + type +
-                                             ' x=' + x + ' y=' + y + ' count=' 
+ count +
-                                             ' buttons=' + buttons + ' 
modifier=' + modifier);
-       },
-
-       _postDialogKeyboardEvent: function(type, dialogid, charcode, keycode) {
-               this._map._socket.sendMessage('dialogkey dialogid=' + dialogid 
+ ' type=' + type +
-                                             ' char=' + charcode + ' key=' + 
keycode);
-       },
-
-       _postDialogChildMouseEvent: function(type, dialogid, x, y, count, 
buttons, modifier) {
-               if (!dialogid.startsWith('.uno:'))
-                       dialogid = '.uno:' + dialogid;
-
-               this._map._socket.sendMessage('dialogchildmouse dialogid=' + 
dialogid +  ' type=' + type +
-                                             ' x=' + x + ' y=' + y + ' count=' 
+ count +
-                                             ' buttons=' + buttons + ' 
modifier=' + modifier);
-       },
-
-       _handleDialogKeyEvent: function(e) {
-               this.modifier = 0;
-               var shift = e.originalEvent.shiftKey ? 
this._map['keyboard'].keyModifier.shift : 0;
-               var ctrl = e.originalEvent.ctrlKey ? 
this._map['keyboard'].keyModifier.ctrl : 0;
-               var alt = e.originalEvent.altKey ? 
this._map['keyboard'].keyModifier.alt : 0;
-               var cmd = e.originalEvent.metaKey ? 
this._map['keyboard'].keyModifier.ctrl : 0;
-               this.modifier = shift | ctrl | alt | cmd;
-
-               var charCode = e.originalEvent.charCode;
-               var keyCode = e.originalEvent.keyCode;
-               var unoKeyCode = this._map['keyboard']._toUNOKeyCode(keyCode);
-
-               if (this.modifier) {
-                       unoKeyCode |= this.modifier;
-                       if (e.type !== 'keyup') {
-                               this._postDialogKeyboardEvent('input', 
e.dialogId, charCode, unoKeyCode);
-                               return;
-                       }
-               }
-
-               if (e.type === 'keydown' && 
this._map['keyboard'].handleOnKeyDownKeys[keyCode]) {
-                       this._postDialogKeyboardEvent('input', e.dialogId, 
charCode, unoKeyCode);
-               }
-               else if (e.type === 'keypress' && 
(!this._map['keyboard'].handleOnKeyDownKeys[keyCode] || charCode !== 0)) {
-                       if (charCode === keyCode && charCode !== 13) {
-                               keyCode = 0;
-                               unoKeyCode = 
this._map['keyboard']._toUNOKeyCode(keyCode);
-                       }
-                       this._postDialogKeyboardEvent('input', e.dialogId, 
charCode, unoKeyCode);
-               }
-               else if (e.type === 'keyup') {
-                       this._postDialogKeyboardEvent('up', e.dialogId, 
charCode, unoKeyCode);
-               }
-       },
-
-       _onDialogClose: function(dialogId) {
-               $('#' + dialogId).remove();
-               this._map.focus();
-               delete this._dialogs[dialogId];
-       },
-
-       _paintDialog: function(dialogId, title, rectangle, imgData) {
-               if (!this._isOpen(dialogId))
-                       return;
-
-               $('#' + dialogId).dialog('option', 'title', 
decodeURIComponent(title));
-               var img = new Image();
-               var canvas = document.getElementById(dialogId + '-canvas');
-               var ctx = canvas.getContext('2d');
-               img.onload = function() {
-                       var x = 0;
-                       var y = 0;
-                       if (rectangle) {
-                               rectangle = rectangle.split(',');
-                               x = parseInt(rectangle[0]);
-                               y = parseInt(rectangle[1]);
-                       }
-
-                       ctx.drawImage(img, x, y);
-               };
-               img.src = imgData;
-       },
-
-       _isSameSize: function(dialogId, newWidth, newHeight) {
-               var ret = false;
-               if (this._isOpen(dialogId))
-               {
-                       var oldWidth = $('#' + dialogId + '-canvas').width();
-                       var oldHeight = $('#' + dialogId + '-canvas').height();
-                       if (oldWidth == newWidth && oldHeight == newHeight)
-                               ret = true;
-               }
-
-               return ret;
-       },
-
-       // Binary dialog msg recvd from core
-       _onDialogPaint: function (e) {
-               var dialogId = e.id.replace('.uno:', '');
-               // is our request to open dialog still valid?
-               if (!this._dialogs[dialogId] || !this._dialogs[dialogId].open)
-                       return;
-
-               if (!this._isOpen(dialogId)) {
-                       this._launchDialog(dialogId, e.dialogWidth, 
e.dialogHeight);
-               } else if (!this._isSameSize(dialogId, e.dialogWidth, 
e.dialogHeight)) {
-                       var canvas = document.getElementById(dialogId + 
'-canvas');
-                       canvas.width = e.dialogWidth;
-                       canvas.height = e.dialogHeight;
-               }
-
-               this._paintDialog(dialogId, e.title, e.rectangle, e.dialog);
-       },
-
-       _onDialogChildPaint: function(e) {
-               var dialogId = e.id.replace('.uno:', '');
-               var img = new Image();
-               var canvas = document.getElementById(dialogId + '-floating');
-               canvas.width = e.width;
-               canvas.height = e.height;
-               var ctx = canvas.getContext('2d');
-               img.onload = function() {
-                       ctx.drawImage(img, 0, 0);
-               };
-               img.src = e.dialog;
-
-               // increase the height of the container,
-               // so that if the floating window goes out of the parent,
-               // it doesn't get stripped off
-               var height = parseInt(canvas.style.top) + canvas.height;
-               var currentHeight = parseInt($('#' + dialogId).css('height'));
-               if (height > currentHeight)
-                       $('#' + dialogId).css('height', height + 'px');
-       },
-
-       _onDialogChildClose: function(dialogId) {
-               $('#' + dialogId + '-floating').remove();
-       },
-
-       _isDialogChildUnchanged: function(dialogId, left, top) {
-               // get pervious dialog child's specs
-               var oldLeft = $('#' + dialogId + '-floating').css('left');
-               var oldTop = $('#' + dialogId + '-floating').css('top');
-               if (!oldLeft || !oldTop) {
-                       // no left or top position set earlier; this is first 
dialog child placement
-                       return false;
-               }
-
-               oldLeft = parseInt(oldLeft);
-               oldTop = parseInt(oldTop);
-               if (oldLeft !== left || oldTop !== top) {
-                       // something changed in new dialog child
-                       return false;
-               }
-
-               return true;
-       },
-
-       _launchDialogChild: function(e) {
-               var positions = e.position.split(',');
-               var left = parseInt(positions[0]);
-               var top = parseInt(positions[1]);
-               // ignore spurious "0, 0" dialog child position recvd from 
backend
-               if (e.position === '0, 0' || 
this._isDialogChildUnchanged(e.dialogId, left, top)) {
-                       // ignore
-                       return;
-               }
-
-               // remove any existing floating element if there's any
-               $('#' + e.dialogId + '-floating').remove();
-               var floatingCanvas = '<canvas class="lokdialogchild-canvas" 
id="' + e.dialogId + '-floating"></canvas>';
-               $('#' + e.dialogId).append(floatingCanvas);
-               $('#' + e.dialogId + '-floating').css({position: 'absolute', 
left: left, top: top});
-
-               var that = this;
-               var dialogId = e.dialogId;
-               // attach events
-               $('#' + dialogId + '-floating').on('mousedown', function(e) {
-                       var buttons = 0;
-                       buttons |= e.button === map['mouse'].JSButtons.left ? 
map['mouse'].LOButtons.left : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.middle ? 
map['mouse'].LOButtons.middle : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.right ? 
map['mouse'].LOButtons.right : 0;
-                       var modifier = 0;
-                       that._postDialogChildMouseEvent('buttondown', dialogId, 
e.offsetX, e.offsetY, 1, buttons, modifier);
-               });
-
-               $('#' + dialogId + '-floating').on('mouseup', function(e) {
-                       var buttons = 0;
-                       buttons |= e.button === map['mouse'].JSButtons.left ? 
map['mouse'].LOButtons.left : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.middle ? 
map['mouse'].LOButtons.middle : 0;
-                       buttons |= e.button === map['mouse'].JSButtons.right ? 
map['mouse'].LOButtons.right : 0;
-                       var modifier = 0;
-                       that._postDialogChildMouseEvent('buttonup', dialogId, 
e.offsetX, e.offsetY, 1, buttons, modifier);
-               });
-
-               $('#' + dialogId + '-floating').on('mousemove', function(e) {
-                       that._postDialogChildMouseEvent('move', dialogId, 
e.offsetX, e.offsetY, 1, 0, 0);
-               });
-
-               $('#' + dialogId + '-floating').on('contextmenu', function() {
-                       return false;
-               });
-       },
-
-       _onDialogChildMsg: function(e) {
-               e.dialogId = e.dialogId.replace('.uno:', '');
-               if (e.action === 'invalidate') {
-                       if (this._isOpen(e.dialogId))
-                       {
-                               this._map.sendDialogCommand(e.dialogId, false 
/* no json */, true /* dialog child*/);
-                               this._launchDialogChild(e);
-                       }
-               } else if (e.action === 'close') {
-                       this._onDialogChildClose(e.dialogId);
-               }
-       }
-});
-
-L.control.lokDialog = function (options) {
-       return new L.Control.LokDialog(options);
-};
diff --git a/loleaflet/src/control/Control.Menubar.js 
b/loleaflet/src/control/Control.Menubar.js
index fda37f4b..2d4c8301 100644
--- a/loleaflet/src/control/Control.Menubar.js
+++ b/loleaflet/src/control/Control.Menubar.js
@@ -41,13 +41,11 @@ L.Control.Menubar = L.Control.extend({
                                        {name: _('Record'), type: 'unocommand', 
uno: '.uno:TrackChanges'},
                                        {name: _('Show'), type: 'unocommand', 
uno: '.uno:ShowTrackedChanges'},
                                        {type: 'separator'},
-                                       {name: _('Manage Changes...'), id: 
'.uno:AcceptTrackedChanges', type: 'dialog'},
                                        {name: _('Accept All'), type: 
'unocommand', uno: '.uno:AcceptAllTrackedChanges'},
                                        {name: _('Reject All'), type: 
'unocommand', uno: '.uno:RejectAllTrackedChanges'},
                                        {name: _('Previous'), type: 
'unocommand', uno: '.uno:PreviousTrackedChange'},
                                        {name: _('Next'), type: 'unocommand', 
uno: '.uno:NextTrackedChange'}
-                               ]},
-                               {name: _('ImageMap'), id: 
'.uno:ImageMapDialog', type: 'dialog'}
+                               ]}
                        ]},
                        {name: _('View'), id: 'view', type: 'menu', menu: [
                                {name: _('Full screen'), id: 'fullscreen', 
type: 'action'},
@@ -69,7 +67,6 @@ L.Control.Menubar = L.Control.extend({
                                {name: _('Page break'), type: 'unocommand', 
uno: '.uno:InsertPageBreak'},
                                {name: _('Column break'), type: 'unocommand', 
uno: '.uno:InsertColumnBreak'},
                                {type: 'separator'},
-                               {name: _('Hyperlink'), id: 
'.uno:HyperlinkDialog', type: 'dialog'},
                                {name: _('Special character...'), id: 
'specialcharacter', type: 'action'},
                                {name: _('Formatting mark'), type: 'menu', 
menu: [
                                        {name: _('Non-breaking space'), type: 
'unocommand', uno: '.uno:InsertNonBreakingSpace'},
@@ -78,11 +75,7 @@ L.Control.Menubar = L.Control.extend({
                                        {name: _('No-width optional break'), 
type: 'unocommand', uno: '.uno:InsertZWSP'},
                                        {name: _('No-width no break'), type: 
'unocommand', uno: '.uno:InsertZWNBSP'},
                                        {name: _('Left-to-right mark'), type: 
'unocommand', uno: '.uno:InsertLRM'},
-                                       {name: _('Right-to-left mark'), type: 
'unocommand', uno: '.uno:InsertRLM'}]},
-                               {name: _('Field...'), id: '.uno:InsertField', 
type: 'dialog'},
-                               {name: _('Index Entry...'), id: 
'.uno:InsertIndexesEntry', type: 'dialog'},
-                               {name: _('Bibliography Entry...'), id: 
'.uno:InsertAuthoritiesEntry', type: 'dialog'}
-                       ]
+                                       {name: _('Right-to-left mark'), type: 
'unocommand', uno: '.uno:InsertRLM'}]}]
                        },
                        {name: _('Format'), type: 'menu', menu: [
                                {name: _('Text'), type: 'menu', menu: [
@@ -182,16 +175,13 @@ L.Control.Menubar = L.Control.extend({
                                        {name: _('Merge cells'), type: 
'unocommand', uno: '.uno:MergeCells'}]
                        },
                        {name: _('Tools'), id: 'tools', type: 'menu', menu: [
-                               {name: _('Spelling and Grammar'), id: 
'.uno:SpellingAndGrammarDialog', type: 'dialog'},
                                {name: _('Automatic spell checking'), type: 
'unocommand', uno: '.uno:SpellOnline'},
                                {name: _('Language for selection'), type: 
'menu', menu: [
                                        {name: _('None (Do not check 
spelling)'), id: 'noneselection', type: 'unocommand', uno: 
'.uno:LanguageStatus?Language:string=Current_LANGUAGE_NONE'}]},
                                {name: _('Language for paragraph'), type: 
'menu', menu: [
                                        {name: _('None (Do not check 
spelling)'), id: 'noneparagraph', type: 'unocommand', uno: 
'.uno:LanguageStatus?Language:string=Paragraph_LANGUAGE_NONE'}]},
                                {name: _('Language for entire document'), type: 
'menu', menu: [
-                                       {name: _('None (Do not check 
spelling)'), id: 'nonelanguage', type: 'unocommand', uno: 
'.uno:LanguageStatus?Language:string=Default_LANGUAGE_NONE'}]},
-                               {name: _('Find & replace Dialog'), id: 
'.uno:SearchDialog', type: 'dialog'},
-                               {name: _('Word count'), id: 
'.uno:WordCountDialog', type: 'dialog'}
+                                       {name: _('None (Do not check 
spelling)'), id: 'nonelanguage', type: 'unocommand', uno: 
'.uno:LanguageStatus?Language:string=Default_LANGUAGE_NONE'}]}
                        ]},
                        {name: _('Help'), id: 'help', type: 'menu', menu: [
                                {name: _('Keyboard shortcuts'), id: 
'keyboard-shortcuts', type: 'action'},
@@ -788,8 +778,6 @@ L.Control.Menubar = L.Control.extend({
                        map.sendUnoCommand(unoCommand);
                } else if (type === 'action') {
                        self._executeAction(item);
-               } else if (type === 'dialog') {
-                       map.fire('opendialog', {dialogId: $(item).data('id')});
                }
 
                if ($(item).data('id') !== 'insertcomment')
@@ -869,9 +857,6 @@ L.Control.Menubar = L.Control.extend({
                        } else if (menu[i].type === 'unocommand') {
                                $(aItem).data('type', 'unocommand');
                                $(aItem).data('uno', menu[i].uno);
-                       } else if (menu[i].type === 'dialog') {
-                               $(aItem).data('type', 'dialog');
-                               $(aItem).data('id', menu[i].id);
                        } else if (menu[i].type === 'separator') {
                                $(aItem).addClass('separator');
                        } else if (menu[i].type === 'action') {
diff --git a/loleaflet/src/control/Toolbar.js b/loleaflet/src/control/Toolbar.js
index 66514d7b..337188a0 100644
--- a/loleaflet/src/control/Toolbar.js
+++ b/loleaflet/src/control/Toolbar.js
@@ -142,20 +142,6 @@ L.Map.include({
                }
        },
 
-       sendDialogCommand: function (command, rectangle, child) {
-               if (this._permission === 'edit') {
-                       if (!command.startsWith('.uno:'))
-                               command = '.uno:' + command;
-                       var dialogCmd = 'dialog';
-                       if (child)
-                               dialogCmd = 'dialogchild';
-                       // make sure there are no spaces in rectangle
-                       if (rectangle)
-                               rectangle = rectangle.replace(/ /g, '');
-                       this._socket.sendMessage(dialogCmd + ' ' + command + 
(rectangle ? ' rectangle=' + rectangle : ''));
-               }
-       },
-
        toggleCommandState: function (unoState) {
                if (this._permission === 'edit') {
                        if (!unoState.startsWith('.uno:')) {
diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js
index 5adf34b8..ec69b42b 100644
--- a/loleaflet/src/core/Socket.js
+++ b/loleaflet/src/core/Socket.js
@@ -608,7 +608,7 @@ L.Socket = L.Class.extend({
                                }
                        }
                }
-               else if (!textMsg.startsWith('tile:') && 
!textMsg.startsWith('renderfont:') && !textMsg.startsWith('dialogpaint:') && 
!textMsg.startsWith('dialogchildpaint:')) {
+               else if (!textMsg.startsWith('tile:') && 
!textMsg.startsWith('renderfont:')) {
                        // log the tile msg separately as we need the tile 
coordinates
                        L.Log.log(textMsg, L.INCOMING);
                        if (imgBytes !== undefined) {
@@ -838,18 +838,6 @@ L.Socket = L.Class.extend({
                        else if (tokens[i].startsWith('wid=')) {
                                command.wireId = 
this.getParameterValue(tokens[i]);
                        }
-                       else if (tokens[i].substring(0, 6) === 'title=') {
-                               command.title = tokens[i].substring(6);
-                       }
-                       else if (tokens[i].substring(0, 12) === 'dialogwidth=') 
{
-                               command.dialogwidth = tokens[i].substring(12);
-                       }
-                       else if (tokens[i].substring(0, 13) === 
'dialogheight=') {
-                               command.dialogheight = tokens[i].substring(13);
-                       }
-                       else if (tokens[i].substring(0, 10) === 'rectangle=') {
-                               command.rectangle = tokens[i].substring(10);
-                       }
                }
                if (command.tileWidth && command.tileHeight && 
this._map._docLayer) {
                        var defaultZoom = this._map.options.zoom;
diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index 7ee9c90c..ca9fbffd 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -437,18 +437,6 @@ L.TileLayer = L.GridLayer.extend({
                else if (textMsg.startsWith('tile:')) {
                        this._onTileMsg(textMsg, img);
                }
-               else if (textMsg.startsWith('dialogpaint:')) {
-                       this._onDialogPaintMsg(textMsg, img);
-               }
-               else if (textMsg.startsWith('dialogchildpaint:')) {
-                       this._onDialogChildPaintMsg(textMsg, img);
-               }
-               else if (textMsg.startsWith('dialog:')) {
-                       this._onDialogMsg(textMsg);
-               }
-               else if (textMsg.startsWith('dialogchild:')) {
-                       this._onDialogChildMsg(textMsg);
-               }
                else if (textMsg.startsWith('unocommandresult:')) {
                        this._onUnoCommandResultMsg(textMsg);
                }
@@ -1192,46 +1180,6 @@ L.TileLayer = L.GridLayer.extend({
 
        },
 
-       _onDialogPaintMsg: function(textMsg, img) {
-               var command = this._map._socket.parseServerCmd(textMsg);
-
-               this._map.fire('dialogpaint', {
-                       id: command.id,
-                       dialog: img,
-                       title: command.title,
-                       // TODO: add id too
-                       dialogWidth: command.dialogwidth,
-                       dialogHeight: command.dialogheight,
-                       rectangle: command.rectangle
-               });
-       },
-
-       _onDialogChildPaintMsg: function(textMsg, img) {
-               var command = this._map._socket.parseServerCmd(textMsg);
-               var width = command.width;
-               var height = command.height;
-
-               this._map.fire('dialogchildpaint', {
-                       id: command.id,
-                       dialog: img,
-                       // TODO: add id too
-                       width: width,
-                       height: height
-               });
-       },
-
-       _onDialogMsg: function(textMsg) {
-               textMsg = textMsg.substring('dialog: '.length);
-               var dialogMsg = JSON.parse(textMsg);
-               this._map.fire('dialog', dialogMsg);
-       },
-
-       _onDialogChildMsg: function(textMsg) {
-               textMsg = textMsg.substring('dialogchild: '.length);
-               var dialogMsg = JSON.parse(textMsg);
-               this._map.fire('dialogchild', dialogMsg);
-       },
-
        _onTileMsg: function (textMsg, img) {
                var command = this._map._socket.parseServerCmd(textMsg);
                var coords = this._twipsToCoords(command);
diff --git a/tools/KitClient.cpp b/tools/KitClient.cpp
index 98ee4d9f..aa2c012f 100644
--- a/tools/KitClient.cpp
+++ b/tools/KitClient.cpp
@@ -79,8 +79,6 @@ extern "C"
             CASE(INVALIDATE_HEADER);
             CASE(CELL_ADDRESS);
             CASE(RULER_UPDATE);
-            CASE(DIALOG);
-            CASE(DIALOG_CHILD);
 #undef CASE
         }
         std::cout << " payload: " << payload << std::endl;
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index 586f1ea9..84624ba1 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -134,10 +134,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
              tokens[0] != "paste" &&
              tokens[0] != "insertfile" &&
              tokens[0] != "key" &&
-             tokens[0] != "dialogkey" &&
              tokens[0] != "mouse" &&
-             tokens[0] != "dialogmouse" &&
-             tokens[0] != "dialogchildmouse" &&
              tokens[0] != "partpagerectangles" &&
              tokens[0] != "ping" &&
              tokens[0] != "renderfont" &&
@@ -155,9 +152,7 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
              tokens[0] != "tilecombine" &&
              tokens[0] != "uno" &&
              tokens[0] != "useractive" &&
-             tokens[0] != "userinactive" &&
-             tokens[0] != "dialog" &&
-             tokens[0] != "dialogchild")
+             tokens[0] != "userinactive")
     {
         sendTextFrame("error: cmd=" + tokens[0] + " kind=unknown");
         return false;
@@ -221,10 +216,6 @@ bool ClientSession::_handleInput(const char *buffer, int 
length)
     {
         return sendTile(buffer, length, tokens, docBroker);
     }
-    else if (tokens[0] == "dialog" || tokens[0] == "dialogchild")
-    {
-        docBroker->handleDialogRequest(std::string(buffer, length));
-    }
     else if (tokens[0] == "tilecombine")
     {
         return sendCombinedTiles(buffer, length, tokens, docBroker);
diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp
index 69cd515b..fad24344 100644
--- a/wsd/DocumentBroker.cpp
+++ b/wsd/DocumentBroker.cpp
@@ -1140,14 +1140,6 @@ bool DocumentBroker::handleInput(const 
std::vector<char>& payload)
         {
             handleTileCombinedResponse(payload);
         }
-        else if (command == "dialogpaint:")
-        {
-            handleDialogPaintResponse(payload, false);
-        }
-        else if (command == "dialogchildpaint:")
-        {
-            handleDialogPaintResponse(payload, true);
-        }
         else if (command == "errortoall:")
         {
             LOG_CHECK_RET(message->tokens().size() == 3, false);
@@ -1239,13 +1231,6 @@ void DocumentBroker::handleTileRequest(TileDesc& tile,
     _debugRenderedTileCount++;
 }
 
-void DocumentBroker::handleDialogRequest(const std::string& dialogCmd)
-{
-    assertCorrectThread();
-    std::unique_lock<std::mutex> lock(_mutex);
-    _childProcess->sendTextFrame(dialogCmd);
-}
-
 void DocumentBroker::handleTileCombinedRequest(TileCombined& tileCombined,
                                                const 
std::shared_ptr<ClientSession>& session)
 {
@@ -1346,31 +1331,6 @@ void DocumentBroker::handleTileResponse(const 
std::vector<char>& payload)
     }
 }
 
-void DocumentBroker::handleDialogPaintResponse(const std::vector<char>& 
payload, bool child)
-{
-    const std::string firstLine = getFirstLine(payload);
-    LOG_DBG("Handling " << (child ? "dialogchildpaint" : "dialogpaint") << " " 
<< firstLine);
-
-    const auto length = payload.size();
-    if (firstLine.size() < static_cast<std::string::size_type>(length) - 1)
-    {
-        const auto buffer = payload.data();
-        const auto offset = firstLine.size() + 1;
-
-        auto msgPayload = std::make_shared<Message>(firstLine,
-                                                    Message::Dir::Out,
-                                                    payload.size());
-        msgPayload->append("\n", 1);
-        msgPayload->append(buffer + offset, payload.size() - offset);
-
-        std::unique_lock<std::mutex> lock(_mutex);
-        for (const auto& sessionIt : _sessions)
-        {
-            sessionIt.second->enqueueSendMessage(msgPayload);
-        }
-    }
-}
-
 void DocumentBroker::handleTileCombinedResponse(const std::vector<char>& 
payload)
 {
     const std::string firstLine = getFirstLine(payload);
diff --git a/wsd/DocumentBroker.hpp b/wsd/DocumentBroker.hpp
index a56d3332..5d8a955a 100644
--- a/wsd/DocumentBroker.hpp
+++ b/wsd/DocumentBroker.hpp
@@ -303,12 +303,10 @@ public:
     void invalidateTiles(const std::string& tiles);
     void handleTileRequest(TileDesc& tile,
                            const std::shared_ptr<ClientSession>& session);
-    void handleDialogRequest(const std::string& dialogCmd);
     void handleTileCombinedRequest(TileCombined& tileCombined,
                                    const std::shared_ptr<ClientSession>& 
session);
     void cancelTileRequests(const std::shared_ptr<ClientSession>& session);
     void handleTileResponse(const std::vector<char>& payload);
-    void handleDialogPaintResponse(const std::vector<char>& payload, bool 
child);
     void handleTileCombinedResponse(const std::vector<char>& payload);
 
     void destroyIfLastEditor(const std::string& id);
diff --git a/wsd/protocol.txt b/wsd/protocol.txt
index 3af10f64..ce52204f 100644
--- a/wsd/protocol.txt
+++ b/wsd/protocol.txt
@@ -149,10 +149,6 @@ tilecombine <parameters>
     comma-separated lists, and the number of elements in each must be
     same.
 
-dialog <command>
-
-    <command> is unique identifier for the dialog that needs to be painted.
-
 uno <command>
 
     <command> is a line of text.
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to