loolwsd/MessageQueue.cpp | 7 +++---- loolwsd/MessageQueue.hpp | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-)
New commits: commit 4e7ba53a2b0c91c35d93f11e114a9e56dc467555 Author: Jan Holesovsky <[email protected]> Date: Fri Sep 23 10:37:33 2016 +0200 Prioritize the views where the cursor moved the most recently. Even the order of the views matters when the editing is happening. Change-Id: Id0868a8198f9fa955512fccba57fa063eab46e8c Reviewed-on: https://gerrit.libreoffice.org/29284 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/MessageQueue.cpp b/loolwsd/MessageQueue.cpp index 2f46e10..01f06ac 100644 --- a/loolwsd/MessageQueue.cpp +++ b/loolwsd/MessageQueue.cpp @@ -175,12 +175,11 @@ bool TileQueue::priority(const std::string& tileMsg) auto tile = TileDesc::parse(tileMsg); //FIXME: Expensive, avoid. - for (auto& pair : _cursorPositions) + for (int view : _viewOrder) { - if (tile.intersectsWithRect(pair.second.X, pair.second.Y, pair.second.Width, pair.second.Height)) - { + auto& cursor = _cursorPositions[view]; + if (tile.intersectsWithRect(cursor.X, cursor.Y, cursor.Width, cursor.Height)) return true; - } } return false; diff --git a/loolwsd/MessageQueue.hpp b/loolwsd/MessageQueue.hpp index 89d314e..11bad5f 100644 --- a/loolwsd/MessageQueue.hpp +++ b/loolwsd/MessageQueue.hpp @@ -10,6 +10,7 @@ #ifndef INCLUDED_MESSAGEQUEUE_HPP #define INCLUDED_MESSAGEQUEUE_HPP +#include <algorithm> #include <condition_variable> #include <deque> #include <map> @@ -112,10 +113,24 @@ public: { _cursorPositions[viewId] = cursorPosition; } + + auto view = std::find(_viewOrder.begin(), _viewOrder.end(), viewId); + if (view != _viewOrder.end()) + { + std::swap(_viewOrder.front(), *view); + } + else + { + _viewOrder.push_front(viewId); + } } void removeCursorPosition(int viewId) { + auto it = std::find(_viewOrder.begin(), _viewOrder.end(), viewId); + if (it != _viewOrder.end()) + _viewOrder.erase(it); + _cursorPositions.erase(viewId); } @@ -131,6 +146,10 @@ private: private: std::map<int, CursorPosition> _cursorPositions; + + /// Check the views in the order of how the editing (cursor movement) has + /// been happening. + std::deque<int> _viewOrder; }; #endif _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
