[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-6.4' - include/LibreOfficeKit libreofficekit/source sc/source
Dennis Francis (via logerrit)
logerrit at kemper.freedesktop.org
Wed Aug 18 11:50:11 UTC 2021
include/LibreOfficeKit/LibreOfficeKitEnums.h | 8 ++++++++
libreofficekit/source/gtk/lokdocview.cxx | 1 +
sc/source/ui/unoobj/docuno.cxx | 19 +++++++++++++++++++
3 files changed, 28 insertions(+)
New commits:
commit 5f2d669a51a91b21196eecb935aa55d3fc1aa7be
Author: Dennis Francis <dennis.francis at collabora.com>
AuthorDate: Thu Aug 12 15:58:15 2021 +0530
Commit: Dennis Francis <dennis.francis at collabora.com>
CommitDate: Wed Aug 18 13:49:33 2021 +0200
sc: lok: introduce LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR callback
to send the document background color (Calc only for now).
Change-Id: Ibd2f042a81c9bb714bed947c4ef92f82ff3e6f50
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120524
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Tested-by: Dennis Francis <dennis.francis at collabora.com>
diff --git a/include/LibreOfficeKit/LibreOfficeKitEnums.h b/include/LibreOfficeKit/LibreOfficeKitEnums.h
index 94e4b95c0631..90a7f23d82b6 100644
--- a/include/LibreOfficeKit/LibreOfficeKitEnums.h
+++ b/include/LibreOfficeKit/LibreOfficeKitEnums.h
@@ -772,6 +772,12 @@ typedef enum
* The payload format is JSON: { "title": "title text", "content": "content text" }
*/
LOK_CALLBACK_VALIDITY_INPUT_HELP = 51,
+
+ /**
+ * This is currently Calc only. Indicates the document background
+ * color in the payload as a RGB hex string (RRGGBB).
+ */
+ LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR = 52,
}
LibreOfficeKitCallbackType;
@@ -904,6 +910,8 @@ static inline const char* lokCallbackTypeToString(int nType)
return "LOK_CALLBACK_FORM_FIELD_BUTTON";
case LOK_CALLBACK_INVALIDATE_SHEET_GEOMETRY:
return "LOK_CALLBACK_INVALIDATE_SHEET_GEOMETRY";
+ case LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR:
+ return "LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR";
}
assert(!"Unknown LibreOfficeKitCallbackType type.");
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 3eb5a5753085..3f61fbb8aad7 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -1386,6 +1386,7 @@ callback (gpointer pData)
case LOK_CALLBACK_TAB_STOP_LIST:
case LOK_CALLBACK_FORM_FIELD_BUTTON:
case LOK_CALLBACK_INVALIDATE_SHEET_GEOMETRY:
+ case LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR:
{
// TODO: Implement me
break;
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index 8478211e2bca..186c4ffe9d39 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -23,6 +23,7 @@
#include <scitems.hxx>
#include <comphelper/sequence.hxx>
+#include <editeng/brushitem.hxx>
#include <editeng/editview.hxx>
#include <editeng/outliner.hxx>
#include <o3tl/any.hxx>
@@ -958,6 +959,19 @@ bool ScModelObj::isMimeTypeSupported()
return EditEngine::HasValidData(aDataHelper.GetTransferable());
}
+static void lcl_sendLOKDocumentBackground(const ScViewData* pViewData)
+{
+ ScDocShell* pDocSh = pViewData->GetDocShell();
+ ScDocument& rDoc = pDocSh->GetDocument();
+ const ScPatternAttr *pAttr = rDoc.GetDefPattern();
+ const SfxPoolItem& rItem = pAttr->GetItem(ATTR_BACKGROUND);
+ const SvxBrushItem& rBackground = static_cast<const SvxBrushItem&>(rItem);
+ const Color& rColor = rBackground.GetColor();
+
+ ScTabViewShell* pViewShell = pViewData->GetViewShell();
+ pViewShell->libreOfficeKitViewCallback(LOK_CALLBACK_DOCUMENT_BACKGROUND_COLOR, rColor.AsRGBHexString().toUtf8().getStr());
+}
+
void ScModelObj::setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, int nTileTwipWidth_, int nTileTwipHeight_)
{
ScViewData* pViewData = ScDocShell::GetViewData();
@@ -965,6 +979,11 @@ void ScModelObj::setClientZoom(int nTilePixelWidth_, int nTilePixelHeight_, int
if (!pViewData)
return;
+ // Currently in LOK clients the doc background cannot be changed, so send this sparingly as possible but for every view.
+ // FIXME: Find a better place to trigger this callback where it would be called just once per view creation.
+ // Doing this in ScTabViewShell init code does not work because callbacks do not work at that point for the first view.
+ lcl_sendLOKDocumentBackground(pViewData);
+
const Fraction newZoomX(nTilePixelWidth_ * TWIPS_PER_PIXEL, nTileTwipWidth_);
const Fraction newZoomY(nTilePixelHeight_ * TWIPS_PER_PIXEL, nTileTwipHeight_);
More information about the Libreoffice-commits
mailing list