[Libreoffice-commits] core.git: cui/source include/svl include/svx sc/source svl/Library_svl.mk svl/source

Kohei Yoshida kohei.yoshida at collabora.com
Sat Mar 1 10:00:05 PST 2014


 cui/source/tabpages/border.cxx |    8 +++
 include/svl/int64item.hxx      |   56 +++++++++++++++++++++
 include/svx/svxids.hrc         |    3 -
 sc/source/ui/view/tabvwsha.cxx |    8 ++-
 svl/Library_svl.mk             |    1 
 svl/source/items/int64item.cxx |  109 +++++++++++++++++++++++++++++++++++++++++
 6 files changed, 183 insertions(+), 2 deletions(-)

New commits:
commit 2f527738ea4f8e93acafdd7f0ae06de1678cfdd8
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Sat Mar 1 12:54:43 2014 -0500

    Set the default cell border line width to 0.75 pt in Calc.
    
    0.75 pt provides a better interop with Excel documents.
    
    Change-Id: Ic1d2cbbe4e35dc0793a0e35d3836261d91138f7c

diff --git a/cui/source/tabpages/border.cxx b/cui/source/tabpages/border.cxx
index a2d19a5..3f8881b 100644
--- a/cui/source/tabpages/border.cxx
+++ b/cui/source/tabpages/border.cxx
@@ -41,6 +41,7 @@
 #include <sfx2/request.hxx>
 #include <svl/intitem.hxx>
 #include <svl/ilstitem.hxx>
+#include <svl/int64item.hxx>
 #include <sfx2/itemconnect.hxx>
 #include <sal/macros.h>
 #include "borderconn.hxx"
@@ -167,6 +168,13 @@ SvxBorderTabPage::SvxBorderTabPage(Window* pParent, const SfxItemSet& rCoreAttrs
             maUsedBorderStyles.insert(static_cast<sal_Int16>(aUsedStyles[i]));
     }
 
+    if (rCoreAttrs.HasItem(SID_ATTR_BORDER_DEFAULT_WIDTH, &pItem))
+    {
+        // The caller specifies default line width.  Honor it.
+        const SfxInt64Item* p = static_cast<const SfxInt64Item*>(pItem);
+        m_pLineWidthMF->SetValue(p->GetValue());
+    }
+
     // set metric
     FieldUnit eFUnit = GetModuleFieldUnit( rCoreAttrs );
 
diff --git a/include/svl/int64item.hxx b/include/svl/int64item.hxx
new file mode 100644
index 0000000..2d6fd67
--- /dev/null
+++ b/include/svl/int64item.hxx
@@ -0,0 +1,56 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#ifndef INCLUDED_SVL_INT64ITEM_HXX
+#define INCLUDED_SVL_INT64ITEM_HXX
+
+#include <svl/poolitem.hxx>
+#include <svl/svldllapi.h>
+
+class SVL_DLLPUBLIC SfxInt64Item : public SfxPoolItem
+{
+    sal_Int64 mnValue;
+
+public:
+    SfxInt64Item( sal_uInt16 nWhich = 0, sal_Int64 nVal = 0 );
+    SfxInt64Item( sal_uInt16 nWhich, SvStream & rStream );
+    SfxInt64Item( const SfxInt64Item& rItem );
+
+    virtual ~SfxInt64Item();
+
+    virtual bool operator== ( const SfxPoolItem& rItem ) const;
+
+    virtual int Compare( const SfxPoolItem& r ) const;
+    virtual int Compare( const SfxPoolItem& r, const IntlWrapper& rIntlWrapper ) const;
+
+    virtual SfxItemPresentation GetPresentation(
+        SfxItemPresentation, SfxMapUnit, SfxMapUnit,
+        OUString& rText, const IntlWrapper* pIntlWrapper = NULL ) const;
+
+    virtual bool QueryValue(
+        com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 ) const;
+
+    virtual bool PutValue(
+        const com::sun::star::uno::Any& rVal, sal_uInt8 nMemberId = 0 );
+
+    virtual SfxPoolItem* Create( SvStream& rStream, sal_uInt16 nItemVersion ) const;
+
+    virtual SvStream& Store( SvStream& rStream, sal_uInt16 nItemVersion ) const;
+
+    virtual SfxPoolItem* Clone( SfxItemPool* pOther = NULL ) const;
+
+    sal_Int64 GetValue() const;
+
+    void SetValue( sal_Int64 nVal );
+};
+
+
+#endif
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/svx/svxids.hrc b/include/svx/svxids.hrc
index ae66d26..fdfae53 100644
--- a/include/svx/svxids.hrc
+++ b/include/svx/svxids.hrc
@@ -958,10 +958,11 @@
 #define SID_SW_ATTR_FILL_GRADIENT                       ( SID_SVX_START + 1139 )
 
 #define SID_ATTR_BORDER_STYLES                          ( SID_SVX_START + 1140 )
+#define SID_ATTR_BORDER_DEFAULT_WIDTH                   ( SID_SVX_START + 1141 )
 
 
 // IMPORTANT NOTE: adjust SID_SVX_FIRSTFREE, when adding new slot id
-#define SID_SVX_FIRSTFREE                               (SID_ATTR_BORDER_STYLES + 1)
+#define SID_SVX_FIRSTFREE                               (SID_ATTR_BORDER_DEFAULT_WIDTH + 1)
 
 
 // Overflow check for slot IDs
diff --git a/sc/source/ui/view/tabvwsha.cxx b/sc/source/ui/view/tabvwsha.cxx
index 57abb07..7bd88ac 100644
--- a/sc/source/ui/view/tabvwsha.cxx
+++ b/sc/source/ui/view/tabvwsha.cxx
@@ -25,6 +25,7 @@
 #include <svx/numinf.hxx>
 #include <svl/srchitem.hxx>
 #include <svl/ilstitem.hxx>
+#include <svl/int64item.hxx>
 #include <svx/zoomslideritem.hxx>
 #include <sfx2/bindings.hxx>
 #include <sfx2/viewfrm.hxx>
@@ -480,6 +481,8 @@ void ScTabViewShell::ExecuteCellFormatDlg(SfxRequest& rReq, const OString &rName
     boost::scoped_ptr<SfxItemSet> pOldSet(new SfxItemSet(pOldAttrs->GetItemSet()));
     boost::scoped_ptr<SvxNumberInfoItem> pNumberInfoItem;
 
+    pOldSet->MergeRange(SID_ATTR_BORDER_STYLES, SID_ATTR_BORDER_DEFAULT_WIDTH);
+
     // We only allow these border line types.
     std::vector<sal_Int32> aBorderStyles;
     aBorderStyles.reserve(5);
@@ -490,9 +493,12 @@ void ScTabViewShell::ExecuteCellFormatDlg(SfxRequest& rReq, const OString &rName
     aBorderStyles.push_back(table::BorderLineStyle::DOUBLE);
 
     SfxIntegerListItem aBorderStylesItem(SID_ATTR_BORDER_STYLES, aBorderStyles);
-    pOldSet->MergeRange(SID_ATTR_BORDER_STYLES, SID_ATTR_BORDER_STYLES);
     pOldSet->Put(aBorderStylesItem);
 
+    // Set the default border width to 0.75 points.
+    SfxInt64Item aBorderWidthItem(SID_ATTR_BORDER_DEFAULT_WIDTH, 75);
+    pOldSet->Put(aBorderWidthItem);
+
     // Get border items and put them in the set:
     GetSelectionFrame( aLineOuter, aLineInner );
     //Fix border incorrect for RTL fdo#62399
diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk
index 3732561..ba4d9b9 100644
--- a/svl/Library_svl.mk
+++ b/svl/Library_svl.mk
@@ -75,6 +75,7 @@ $(eval $(call gb_Library_add_exception_objects,svl,\
     svl/source/items/ilstitem \
     svl/source/items/imageitm \
     svl/source/items/intitem \
+    svl/source/items/int64item \
     svl/source/items/itemiter \
     svl/source/items/itempool \
     svl/source/items/itemprop \
diff --git a/svl/source/items/int64item.cxx b/svl/source/items/int64item.cxx
new file mode 100644
index 0000000..34556b2
--- /dev/null
+++ b/svl/source/items/int64item.cxx
@@ -0,0 +1,109 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <svl/int64item.hxx>
+#include <tools/stream.hxx>
+
+SfxInt64Item::SfxInt64Item( sal_uInt16 nWhich, sal_Int64 nVal ) :
+    SfxPoolItem(nWhich), mnValue(nVal)
+{
+}
+
+SfxInt64Item::SfxInt64Item( sal_uInt16 nWhich, SvStream& rStream ) :
+    SfxPoolItem(nWhich)
+{
+    rStream.ReadInt64(mnValue);
+}
+
+SfxInt64Item::SfxInt64Item( const SfxInt64Item& rItem ) :
+    SfxPoolItem(rItem), mnValue(rItem.mnValue)
+{
+}
+
+SfxInt64Item::~SfxInt64Item() {}
+
+bool SfxInt64Item::operator== ( const SfxPoolItem& rItem ) const
+{
+    return mnValue == static_cast<const SfxInt64Item&>(rItem).mnValue;
+}
+
+int SfxInt64Item::Compare( const SfxPoolItem& r ) const
+{
+    sal_Int64 nOther = static_cast<const SfxInt64Item&>(r).mnValue;
+
+    if (mnValue < nOther)
+        return -1;
+
+    if (mnValue > nOther)
+        return 1;
+
+    return 0;
+}
+
+int SfxInt64Item::Compare( const SfxPoolItem& r, const IntlWrapper& /*rIntlWrapper*/ ) const
+{
+    return Compare(r);
+}
+
+SfxItemPresentation SfxInt64Item::GetPresentation(
+    SfxItemPresentation, SfxMapUnit, SfxMapUnit, OUString& rText,
+    const IntlWrapper* /*pIntlWrapper*/ ) const
+{
+    rText = OUString::number(mnValue);
+    return SFX_ITEM_PRESENTATION_NAMELESS;
+}
+
+bool SfxInt64Item::QueryValue(
+    com::sun::star::uno::Any& rVal, sal_uInt8 /*nMemberId*/ ) const
+{
+    rVal <<= mnValue;
+    return true;
+}
+
+bool SfxInt64Item::PutValue(
+    const com::sun::star::uno::Any& rVal, sal_uInt8 /*nMemberId*/ )
+{
+    sal_Int64 nVal;
+
+    if (rVal >>= nVal)
+    {
+        mnValue = nVal;
+        return true;
+    }
+
+    return false;
+}
+
+SfxPoolItem* SfxInt64Item::Create( SvStream& rStream, sal_uInt16 /*nItemVersion*/ ) const
+{
+    return new SfxInt64Item(Which(), rStream);
+}
+
+SvStream& SfxInt64Item::Store( SvStream& rStream, sal_uInt16 /*nItemVersion*/ ) const
+{
+    return rStream.WriteInt64(mnValue);
+}
+
+SfxPoolItem* SfxInt64Item::Clone( SfxItemPool* /*pOther*/ ) const
+{
+    return new SfxInt64Item(*this);
+}
+
+sal_Int64 SfxInt64Item::GetValue() const
+{
+    return mnValue;
+}
+
+void SfxInt64Item::SetValue( sal_Int64 nVal )
+{
+    mnValue = nVal;
+}
+
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list