summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSahil Gautam <sahil@libreoffice.org>2024-04-17 18:12:18 +0530
committerHeiko Tietze <heiko.tietze@documentfoundation.org>2024-04-22 13:29:53 +0200
commit1cfc2e2c92e1259341ee18cf87be63c4dcebd33d (patch)
treebd8cd5f54e95bebe2740eb6de40681d149c93ee8
parent44f48621a600b4b013115e2671c657725b77883c (diff)
tdf#63374 Change cell background color when in edit mode
Set the edit cell background (EditView) color to CALCCELLFOCUS and allow enabling/disabling via a checkbox tools > options > Calc > View > Edit cell background highlighting Change-Id: I1216dfa0880e1080d23059512e3801d6af3b3c11 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165075 Tested-by: Jenkins Tested-by: Heiko Tietze <heiko.tietze@documentfoundation.org> Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
-rw-r--r--officecfg/registry/schema/org/openoffice/Office/Calc.xcs8
-rw-r--r--sc/source/ui/inc/tpview.hxx2
-rw-r--r--sc/source/ui/optdlg/tpview.cxx16
-rw-r--r--sc/source/ui/view/gridwin4.cxx10
-rw-r--r--sc/uiconfig/scalc/ui/tpviewpage.ui42
5 files changed, 73 insertions, 5 deletions
diff --git a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
index 5582b346910d..fb6edf076f17 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Calc.xcs
@@ -137,6 +137,14 @@
</info>
<value>false</value>
</prop>
+ <prop oor:name="EditCellBackgroundHighlighting" oor:type="xs:boolean" oor:nillable="false">
+ <!-- UIHints: Tools - Options -Spreadsheets - Contents - [Section] Display -->
+ <info>
+ <desc>Indicates whether the edit cell background highlighting is enabled or not.</desc>
+ <label>Edit cell background highlighting</label>
+ </info>
+ <value>false</value>
+ </prop>
<prop oor:name="Anchor" oor:type="xs:boolean" oor:nillable="false">
<!-- UIHints: Tools - Options -Spreadsheets - Contents - [Section] Display -->
<info>
diff --git a/sc/source/ui/inc/tpview.hxx b/sc/source/ui/inc/tpview.hxx
index 97addc9f530d..ace65836d800 100644
--- a/sc/source/ui/inc/tpview.hxx
+++ b/sc/source/ui/inc/tpview.hxx
@@ -47,6 +47,8 @@ class ScTpContentOptions : public SfxTabPage
std::unique_ptr<weld::Widget> m_xValueImg;
std::unique_ptr<weld::CheckButton> m_xColRowHighCB;
std::unique_ptr<weld::Widget> m_xColRowHighImg;
+ std::unique_ptr<weld::CheckButton> m_xEditCellBgHighCB;
+ std::unique_ptr<weld::Widget> m_xEditCellBgHighImg;
std::unique_ptr<weld::CheckButton> m_xAnchorCB;
std::unique_ptr<weld::Widget> m_xAnchorImg;
std::unique_ptr<weld::CheckButton> m_xRangeFindCB;
diff --git a/sc/source/ui/optdlg/tpview.cxx b/sc/source/ui/optdlg/tpview.cxx
index 779dcdd3a96c..d4d9f6731add 100644
--- a/sc/source/ui/optdlg/tpview.cxx
+++ b/sc/source/ui/optdlg/tpview.cxx
@@ -54,6 +54,8 @@ ScTpContentOptions::ScTpContentOptions(weld::Container* pPage, weld::DialogContr
, m_xValueImg(m_xBuilder->weld_widget("lockvalue"))
, m_xColRowHighCB(m_xBuilder->weld_check_button("colrowhigh"))
, m_xColRowHighImg(m_xBuilder->weld_widget("lockcolrowhigh"))
+ , m_xEditCellBgHighCB(m_xBuilder->weld_check_button("editcellbg"))
+ , m_xEditCellBgHighImg(m_xBuilder->weld_widget("lockeditcellbghigh"))
, m_xAnchorCB(m_xBuilder->weld_check_button("anchor"))
, m_xAnchorImg(m_xBuilder->weld_widget("lockanchor"))
, m_xRangeFindCB(m_xBuilder->weld_check_button("rangefind"))
@@ -97,6 +99,7 @@ ScTpContentOptions::ScTpContentOptions(weld::Container* pPage, weld::DialogContr
m_xFormulaMarkCB->connect_toggled(aCBHdl);
m_xValueCB->connect_toggled(aCBHdl);
m_xColRowHighCB->connect_toggled(aCBHdl);
+ m_xEditCellBgHighCB->connect_toggled(aCBHdl);
m_xAnchorCB->connect_toggled(aCBHdl);
m_xVScrollCB->connect_toggled(aCBHdl);
@@ -189,6 +192,13 @@ bool ScTpContentOptions::FillItemSet( SfxItemSet* rCoreSet )
pChange->commit();
bRet = true;
}
+ if (m_xEditCellBgHighCB->get_state_changed_from_saved())
+ {
+ auto pChange(comphelper::ConfigurationChanges::create());
+ officecfg::Office::Calc::Content::Display::EditCellBackgroundHighlighting::set(m_xEditCellBgHighCB->get_active(), pChange);
+ pChange->commit();
+ bRet = true;
+ }
return bRet;
}
@@ -205,6 +215,7 @@ void ScTpContentOptions::Reset( const SfxItemSet* rCoreSet )
m_xFormulaMarkCB->set_active(m_xLocalOptions->GetOption(VOPT_FORMULAS_MARKS));
m_xValueCB ->set_active(m_xLocalOptions->GetOption(VOPT_SYNTAX));
m_xColRowHighCB->set_active(officecfg::Office::Calc::Content::Display::ColumnRowHighlighting::get());
+ m_xEditCellBgHighCB->set_active(officecfg::Office::Calc::Content::Display::EditCellBackgroundHighlighting::get());
m_xAnchorCB ->set_active(m_xLocalOptions->GetOption(VOPT_ANCHOR));
m_xObjGrfLB ->set_active( static_cast<sal_uInt16>(m_xLocalOptions->GetObjMode(VOBJ_TYPE_OLE)) );
@@ -269,6 +280,10 @@ void ScTpContentOptions::Reset( const SfxItemSet* rCoreSet )
m_xColRowHighCB->set_sensitive(!bReadOnly);
m_xColRowHighImg->set_visible(bReadOnly);
+ bReadOnly = officecfg::Office::Calc::Content::Display::EditCellBackgroundHighlighting::isReadOnly();
+ m_xEditCellBgHighCB->set_sensitive(!bReadOnly);
+ m_xEditCellBgHighImg->set_visible(bReadOnly);
+
bReadOnly = officecfg::Office::Calc::Content::Display::Anchor::isReadOnly();
m_xAnchorCB->set_sensitive(!bReadOnly);
m_xAnchorImg->set_visible(bReadOnly);
@@ -331,6 +346,7 @@ void ScTpContentOptions::Reset( const SfxItemSet* rCoreSet )
m_xFormulaMarkCB->save_state();
m_xValueCB->save_state();
m_xColRowHighCB->save_state();
+ m_xEditCellBgHighCB->save_state();
m_xAnchorCB->save_state();
m_xObjGrfLB->save_value();
m_xDiagramLB->save_value();
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 5c4ea63e268a..896d44f5898b 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -38,6 +38,7 @@
#include <comphelper/lok.hxx>
#include <sfx2/lokhelper.hxx>
#include <sfx2/lokcomponenthelpers.hxx>
+#include <officecfg/Office/Calc.hxx>
#include <svx/svdview.hxx>
#include <svx/svdpagv.hxx>
@@ -720,6 +721,15 @@ void ScGridWindow::DrawContent(OutputDevice &rDevice, const ScTableInfo& rTableI
SCCOL nEditEndCol = mrViewData.GetEditEndCol();
SCROW nEditEndRow = mrViewData.GetEditEndRow();
+ if (officecfg::Office::Calc::Content::Display::EditCellBackgroundHighlighting::get()
+ && !getViewData().GetMarkData().IsMarked())
+ {
+ const Color aBackgroundColor = SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor;
+ Color aHighlightColor = SC_MOD()->GetColorConfig().GetColorValue(svtools::CALCCELLFOCUS).nColor;
+ aHighlightColor.Merge(aBackgroundColor, 100);
+ pEditView->SetBackgroundColor(aHighlightColor);
+ }
+
if ( nEditEndCol >= nX1 && nEditCol <= nX2 && nEditEndRow >= nY1 && nEditRow <= nY2 )
aOutputData.SetEditCell( nEditCol, nEditRow );
else
diff --git a/sc/uiconfig/scalc/ui/tpviewpage.ui b/sc/uiconfig/scalc/ui/tpviewpage.ui
index 2213fd24bd38..68d41c216387 100644
--- a/sc/uiconfig/scalc/ui/tpviewpage.ui
+++ b/sc/uiconfig/scalc/ui/tpviewpage.ui
@@ -20,7 +20,7 @@
<property name="label-xalign">0</property>
<property name="shadow-type">none</property>
<child>
- <!-- n-columns=2 n-rows=8 -->
+ <!-- n-columns=2 n-rows=9 -->
<object class="GtkGrid" id="grid6">
<property name="visible">True</property>
<property name="can-focus">False</property>
@@ -127,7 +127,7 @@
</object>
<packing>
<property name="left-attach">1</property>
- <property name="top-attach">7</property>
+ <property name="top-attach">8</property>
</packing>
</child>
<child>
@@ -192,7 +192,7 @@
</object>
<packing>
<property name="left-attach">0</property>
- <property name="top-attach">6</property>
+ <property name="top-attach">7</property>
</packing>
</child>
<child>
@@ -224,7 +224,7 @@
</object>
<packing>
<property name="left-attach">1</property>
- <property name="top-attach">6</property>
+ <property name="top-attach">7</property>
</packing>
</child>
<child>
@@ -237,7 +237,7 @@
</object>
<packing>
<property name="left-attach">0</property>
- <property name="top-attach">7</property>
+ <property name="top-attach">8</property>
</packing>
</child>
<child>
@@ -272,6 +272,38 @@
<property name="top-attach">5</property>
</packing>
</child>
+ <child>
+ <object class="GtkCheckButton" id="editcellbg">
+ <property name="label" translatable="yes" context="tpviewpage|value">Edit cell background highlighting</property>
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="receives-default">False</property>
+ <property name="use-underline">True</property>
+ <property name="draw-indicator">True</property>
+ <child internal-child="accessible">
+ <object class="AtkObject" id="editcellbg-atkobject">
+ <property name="AtkObject::accessible-description" translatable="yes" context="extended_tip|value">Mark the Edit cell background highlighting checkbox to show cell frame background color as the edit cell background.</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage" id="lockeditcellbghigh">
+ <property name="can-focus">False</property>
+ <property name="no-show-all">True</property>
+ <property name="halign">center</property>
+ <property name="valign">center</property>
+ <property name="icon-name">res/lock.png</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
</object>
</child>
<child type="label">