summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDennis Francis <dennis.francis@collabora.com>2021-08-12 15:58:15 +0530
committerDennis Francis <dennis.francis@collabora.com>2021-09-07 08:11:22 +0200
commite70399e5bd4a41a2989030ddfb0404b6248f655d (patch)
tree3af6a0eb24a6f744f1c1813d5992772931f9a68d
parenttdf#144340: fix FB configure on Windows (diff)
downloadcore-e70399e5bd4a41a2989030ddfb0404b6248f655d.tar.gz
core-e70399e5bd4a41a2989030ddfb0404b6248f655d.zip
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@collabora.com> Tested-by: Dennis Francis <dennis.francis@collabora.com> (cherry picked from commit 5f2d669a51a91b21196eecb935aa55d3fc1aa7be) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120738 Tested-by: Jenkins Reviewed-by: Dennis Francis <dennis.francis@collabora.com>
-rw-r--r--include/LibreOfficeKit/LibreOfficeKitEnums.h11
-rw-r--r--libreofficekit/source/gtk/lokdocview.cxx1
-rw-r--r--sc/source/ui/unoobj/docuno.cxx19
3 files changed, 29 insertions, 2 deletions
diff --git a/include/LibreOfficeKit/LibreOfficeKitEnums.h b/include/LibreOfficeKit/LibreOfficeKitEnums.h
index 4090fc8abbac..497a5eacc804 100644
--- a/include/LibreOfficeKit/LibreOfficeKitEnums.h
+++ b/include/LibreOfficeKit/LibreOfficeKitEnums.h
@@ -774,6 +774,12 @@ typedef enum
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,
+
+ /**
* The position of the cell cursor jumped to.
*
* Payload format: "x, y, width, height, column, row", where the first
@@ -783,8 +789,7 @@ typedef enum
*
* Rectangle format is the same as LOK_CALLBACK_INVALIDATE_TILES.
*/
- LOK_CALLBACK_SC_FOLLOW_JUMP = 52,
-
+ LOK_CALLBACK_SC_FOLLOW_JUMP = 53,
}
LibreOfficeKitCallbackType;
@@ -917,6 +922,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";
case LOK_CALLBACK_SC_FOLLOW_JUMP:
return "LOK_CALLBACK_SC_FOLLOW_JUMP";
}
diff --git a/libreofficekit/source/gtk/lokdocview.cxx b/libreofficekit/source/gtk/lokdocview.cxx
index 3edc58bfe141..68c23ffa4e55 100644
--- a/libreofficekit/source/gtk/lokdocview.cxx
+++ b/libreofficekit/source/gtk/lokdocview.cxx
@@ -1414,6 +1414,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:
case LOK_CALLBACK_SC_FOLLOW_JUMP:
{
// TODO: Implement me
diff --git a/sc/source/ui/unoobj/docuno.cxx b/sc/source/ui/unoobj/docuno.cxx
index a320a76f5ae9..40d2b639738f 100644
--- a/sc/source/ui/unoobj/docuno.cxx
+++ b/sc/source/ui/unoobj/docuno.cxx
@@ -21,6 +21,7 @@
#include <scitems.hxx>
#include <comphelper/sequence.hxx>
+#include <editeng/brushitem.hxx>
#include <editeng/editview.hxx>
#include <editeng/outliner.hxx>
#include <o3tl/any.hxx>
@@ -957,6 +958,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();
@@ -964,6 +978,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_);