[Libreoffice-commits] online.git: Branch 'distro/collabora/milestone-7' - 4 commits - loleaflet/reference.html loleaflet/src loolwsd/bundled loolwsd/LOKitClient.cpp loolwsd/LOOLSession.cpp loolwsd/protocol.txt

Pranav Kant pranavk at collabora.com
Fri Apr 22 17:47:21 UTC 2016


 loleaflet/reference.html                                     |   29 +++++++++++
 loleaflet/src/layer/tile/TileLayer.js                        |   10 +++
 loleaflet/src/map/Map.js                                     |    6 +-
 loleaflet/src/map/handler/Map.Keyboard.js                    |    7 ++
 loolwsd/LOKitClient.cpp                                      |    1 
 loolwsd/LOOLSession.cpp                                      |    3 +
 loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h |   23 ++++++++
 loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h  |    5 -
 loolwsd/protocol.txt                                         |   17 ++++++
 9 files changed, 94 insertions(+), 7 deletions(-)

New commits:
commit c016da01dca71f26c48ce1fc7d00993c3f5df108
Author: Pranav Kant <pranavk at collabora.com>
Date:   Mon Apr 11 12:39:21 2016 +0530

    loleaflet bccu#1633: listen to composition events
    
    Treat 'compositionend' event as 'keypress' event with composited
    data.
    
    Change-Id: Ia1d35e3ce2c583259dc6b6179741050ed173fe64
    (cherry picked from commit ef2638298a3fe75ffd34fa82330a7e775090918b)

diff --git a/loleaflet/src/map/Map.js b/loleaflet/src/map/Map.js
index dc55684..0c4f978 100644
--- a/loleaflet/src/map/Map.js
+++ b/loleaflet/src/map/Map.js
@@ -652,7 +652,7 @@ L.Map = L.Evented.extend({
 		L.DomEvent[onOff](this._container, 'click dblclick mousedown mouseup ' +
 			'mouseover mouseout mousemove contextmenu dragover drop ' +
 			'keydown keypress keyup trplclick qdrplclick', this._handleDOMEvent, this);
-		L.DomEvent[onOff](this._textArea, 'copy cut paste keydown keypress keyup', this._handleDOMEvent, this);
+		L.DomEvent[onOff](this._textArea, 'copy cut paste keydown keypress keyup compositionend', this._handleDOMEvent, this);
 
 		if (this.options.trackResize && this._resizeDetector.contentWindow) {
 			L.DomEvent[onOff](this._resizeDetector.contentWindow, 'resize', this._onResize, this);
@@ -757,7 +757,9 @@ L.Map = L.Evented.extend({
 		var data = {
 			originalEvent: e
 		};
-		if (e.type !== 'keypress' && e.type !== 'keyup' && e.type !== 'keydown' && e.type !== 'copy' && e.type !== 'cut' && e.type !== 'paste') {
+		if (e.type !== 'keypress' && e.type !== 'keyup' && e.type !== 'keydown' &&
+			e.type !== 'copy' && e.type !== 'cut' && e.type !== 'paste' &&
+			e.type !== 'compositionend') {
 			data.containerPoint = target instanceof L.Marker ?
 					this.latLngToContainerPoint(target.getLatLng()) : this.mouseEventToContainerPoint(e);
 			data.layerPoint = this.containerPointToLayerPoint(data.containerPoint);
diff --git a/loleaflet/src/map/handler/Map.Keyboard.js b/loleaflet/src/map/handler/Map.Keyboard.js
index b72c246..d6138b2 100644
--- a/loleaflet/src/map/handler/Map.Keyboard.js
+++ b/loleaflet/src/map/handler/Map.Keyboard.js
@@ -170,11 +170,13 @@ L.Map.Keyboard = L.Handler.extend({
 
 		this._map.on('mousedown', this._onMouseDown, this);
 		this._map.on('keydown keyup keypress', this._onKeyDown, this);
+		this._map.on('compositionend', this._onKeyDown, this);
 	},
 
 	removeHooks: function () {
 		this._map.on('mousedown', this._onMouseDown, this);
 		this._map.off('keydown keyup keypress', this._onKeyDown, this);
+		this._map.off('compositionend', this._onKeyDown, this);
 	},
 
 	_setPanOffset: function (pan) {
@@ -257,6 +259,9 @@ L.Map.Keyboard = L.Handler.extend({
 
 		var charCode = e.originalEvent.charCode;
 		var keyCode = e.originalEvent.keyCode;
+		if (e.type === 'compositionend') {
+			charCode = keyCode = e.originalEvent.data.charCodeAt();
+		}
 		var unoKeyCode = this._toUNOKeyCode(keyCode);
 
 		if (this.modifier) {
@@ -273,7 +278,7 @@ L.Map.Keyboard = L.Handler.extend({
 			if (e.type === 'keydown' && this.handleOnKeyDown[keyCode] && charCode === 0) {
 				docLayer._postKeyboardEvent('input', charCode, unoKeyCode);
 			}
-			else if (e.type === 'keypress' &&
+			else if ((e.type === 'keypress' || e.type === 'compositionend') &&
 				(!this.handleOnKeyDown[keyCode] || charCode !== 0)) {
 				if (charCode === keyCode && charCode !== 13) {
 					// Chrome sets keyCode = charCode for printable keys
commit 636e68b76dcb1fab70201051dd4582e23e82d4be
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Apr 8 19:13:54 2016 +0200

    loleaflet bccu#1587: Trigger locontextmenu event with the context menu structure.
    
    (cherry picked from commit b76140cb7b98383ccc5e008a48403c8f235e968a)

diff --git a/loleaflet/reference.html b/loleaflet/reference.html
index 130b38b..0f85442 100644
--- a/loleaflet/reference.html
+++ b/loleaflet/reference.html
@@ -1887,6 +1887,12 @@ unexpected behaviour.</h4>
 		<td>Fired when the state of a command such as .uno:Bold changes.</td>
 	</tr>
 	<tr>
+		<td><code><b>locontextmenu</b></code></td>
+		<td><code><a href="#locontextmenu-event">LOContextMenuEvent</a></code></td>
+		<td>Fired when the user's action invoked a context menu (via a
+		    right-click).  It contains the structure of the menu.</td>
+	</tr>
+	<tr>
 		<td><code><b>docsize</b></code></td>
 		<td><code><a href="#docsize-event">DocumentSizeEvent</a></code></td>
 		<td>Fired when the document size changes.</td>
@@ -2030,6 +2036,29 @@ unexpected behaviour.</h4>
 	</tr>
 </table>
 
+<h3 id="locontextmenu-event">LOContextMenuEvent</h3>
+
+<table data-id='events'>
+	<tr>
+		<th class="width100">property</th>
+		<th>type</th>
+		<th>description</th>
+	</tr>
+	<tr>
+		<td><code><b>menu</b></code></td>
+		<td><code>String</code></td>
+		<td>List of the menu entries.  The structure looks like:<br/>
+<code>
+{ "text": "label text1", "type": "command", "command": ".uno:Something1", "enabled": "true" },
+{ "text": "label text2", "type": "command", "command": ".uno:Something2", "enabled": "false" },
+{ "type": "separator" },
+{ "text": "label text2", "type": "menu", "menu": [ { ... }, { ... }, ... ] },
+...
+</code>
+		</td>
+	</tr>
+</table>
+
 <h3 id="docsize-event">DocumentSizeEvent</h3>
 
 <table data-id='events'>
diff --git a/loleaflet/src/layer/tile/TileLayer.js b/loleaflet/src/layer/tile/TileLayer.js
index 572a444..e40de91 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -330,6 +330,9 @@ L.TileLayer = L.GridLayer.extend({
 		else if (textMsg.startsWith('unocommandresult:')) {
 			this._onUnoCommandResultMsg(textMsg);
 		}
+		else if (textMsg.startsWith('contextmenu:')) {
+			this._onContextMenuMsg(textMsg);
+		}
 	},
 
 	_onCommandValuesMsg: function (textMsg) {
@@ -624,6 +627,13 @@ L.TileLayer = L.GridLayer.extend({
 		this._map.fire('commandresult', {commandName: commandName, success: success});
 	},
 
+	_onContextMenuMsg: function (textMsg) {
+		textMsg = textMsg.substring(13);
+		var obj = JSON.parse(textMsg);
+
+		this._map.fire('locontextmenu', obj);
+	},
+
 	_onTextSelectionMsg: function (textMsg) {
 		var strTwips = textMsg.match(/\d+/g);
 		this._selections.clearLayers();
commit 0172d82f3c523f5ae1d60e85d97894f374fe4a56
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Apr 8 19:13:19 2016 +0200

    loolwsd bccu#1587: Add handling of contextmenu: command.
    
    (cherry picked from commit 156d52b82eb1a4c00e671bbf88e0d5ce61333609)

diff --git a/loolwsd/LOKitClient.cpp b/loolwsd/LOKitClient.cpp
index 9542942..16a98e1 100644
--- a/loolwsd/LOKitClient.cpp
+++ b/loolwsd/LOKitClient.cpp
@@ -67,6 +67,7 @@ extern "C"
             CASE(DOCUMENT_PASSWORD);
             CASE(DOCUMENT_PASSWORD_TO_MODIFY);
             CASE(ERROR);
+            CASE(CONTEXT_MENU);
 #undef CASE
         }
         std::cout << " payload: " << pPayload << std::endl;
diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index 16fc4d8..4020725 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -1091,6 +1091,9 @@ extern "C"
                         " kind=" + object->get("kind").toString() + " code=" + object->get("code").toString());
             }
             break;
+        case LOK_CALLBACK_CONTEXT_MENU:
+            srv->sendTextFrame("contextmenu: " + std::string(pPayload));
+            break;
         }
     }
 }
diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt
index 0c3db9b..600d361 100644
--- a/loolwsd/protocol.txt
+++ b/loolwsd/protocol.txt
@@ -120,6 +120,23 @@ clientvisiblearea x=<x> y=<y> width=<width> height=<height>
 server -> client
 ================
 
+contextmenu: <json description of the context menu>
+
+    When the user right-clicks in the document, the content of the context
+    menu is sent back via this callback.
+
+    The structure of the context menu is a JSON, and looks like:
+
+        {
+            "menu": [
+                { "text": "label text1", "type": "command", "command": ".uno:Something1", "enabled": "true" },
+                { "text": "label text2", "type": "command", "command": ".uno:Something2", "enabled": "false" },
+                { "type": "separator" },
+                { "text": "label text2", "type": "menu", "menu": [ { ... }, { ... }, ... ] },
+                ...
+            ]
+        }
+
 downloadas: jail=<jail directory> dir=<a tmp dir> name=<name> port=<port>
 
     The client should then request http://server:port/jail/dir/name in order to download
commit 75f0b6868179c7b5d47c6d777e9dfee2ddd92464
Author: Jan Holesovsky <kendy at collabora.com>
Date:   Fri Apr 8 16:49:50 2016 +0200

    bccu#1587: Update LOK headers to the latest ones.
    
    (cherry picked from commit 756cb642038e2d3c255ac8dbf92efecf86625beb)

diff --git a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
index 901bf6b..7543ff7 100644
--- a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
+++ b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitEnums.h
@@ -280,6 +280,29 @@ typedef enum
      * }
      */
     LOK_CALLBACK_ERROR,
+
+    /**
+     * Context menu structure
+     *
+     * Returns the structure of context menu.  Contains all the separators &
+     * submenus, example of the returned structure:
+     *
+     * {
+     *     "menu": [
+     *         { "text": "label text1", "type": "command", "command": ".uno:Something1", "enabled": "true" },
+     *         { "text": "label text2", "type": "command", "command": ".uno:Something2", "enabled": "false" },
+     *         { "type": "separator" },
+     *         { "text": "label text2", "type": "menu", "menu": [ { ... }, { ... }, ... ] },
+     *         ...
+     *     ]
+     * }
+     *
+     * The 'command' can additionally have a checkable status, like:
+     *
+     *     {"text": "label text3", "type": "command", "command": ".uno:Something3", "checktype": "checkmark|radio|auto", "checked": "true|false"}
+     */
+    LOK_CALLBACK_CONTEXT_MENU,
+
 }
 LibreOfficeKitCallbackType;
 
diff --git a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h
index a1b2ddc..f1e513e 100644
--- a/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h
+++ b/loolwsd/bundled/include/LibreOfficeKit/LibreOfficeKitInit.h
@@ -45,12 +45,9 @@ extern "C"
     void *lok_loadlib(const char *pFN)
     {
         return dlopen(pFN, RTLD_LAZY
-#if defined __clang__ && defined __linux__ \
-    && defined ENABLE_RUNTIME_OPTIMIZATIONS
-#if !ENABLE_RUNTIME_OPTIMIZATIONS
+#if defined LOK_LOADLIB_GLOBAL
                       | RTLD_GLOBAL
 #endif
-#endif
                       );
     }
 


More information about the Libreoffice-commits mailing list