Add export sheet range option to calc

User can specify which sheets to export e.g. '2-5,7'
exports sheets 2,3,4,5,7.
Note: this is different from exporting pages as one
sheet may contain several pages worth of content.

Also fix a bug where exporting only a selected sheet
causes the next sheet to be exported. e.g.:
Sheet 1 is empty, Sheet 2 has content. Exporting Sheet 1
results in Sheet 2's content being exported

Signed-off-by: NickWingate <nick.wingate@collabora.com>
Change-Id: Iecd42188ddbbbcd70eb37bec80783e29e3cb5b19
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156255
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/159686
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
This commit is contained in:
NickWingate
2023-08-29 15:31:08 +01:00
committed by Caolán McNamara
parent dac8885090
commit 13bd849f60
13 changed files with 217 additions and 29 deletions

View File

@@ -108,8 +108,10 @@ ImpPDFTabDialog::ImpPDFTabDialog(weld::Window* pParent, const Sequence< Property
mbCanCopyOrExtract( false ),
mbCanExtractForAccessibility( true ),
mbIsRangeChecked( false ),
mbIsPageRangeChecked( false ),
msPageRange( ' ' ),
mbIsSheetRangeChecked( false ),
msSheetRange( ' ' ),
mbSelectionIsChecked( false ),
mbExportRelativeFsysLinks( false ),
@@ -506,8 +508,10 @@ Sequence< PropertyValue > ImpPDFTabDialog::GetFilterData()
comphelper::makePropertyValue("RestrictPermissions", mbRestrictPermissions),
comphelper::makePropertyValue("PreparedPermissionPassword", maPreparedOwnerPassword)
};
if( mbIsRangeChecked )
if( mbIsPageRangeChecked )
aRet.push_back(comphelper::makePropertyValue("PageRange", msPageRange));
if( mbIsSheetRangeChecked )
aRet.push_back(comphelper::makePropertyValue("SheetRange", msSheetRange));
else if( mbSelectionIsChecked )
aRet.push_back(comphelper::makePropertyValue("Selection", maSelection));
@@ -531,9 +535,11 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage(weld::Container* pPage, weld::DialogC
, mbIsWriter(false)
, mpParent(nullptr)
, mxRbAll(m_xBuilder->weld_radio_button("all"))
, mxRbRange(m_xBuilder->weld_radio_button("range"))
, mxRbPageRange(m_xBuilder->weld_radio_button("pagerange"))
, mxRbSheetRange(m_xBuilder->weld_radio_button("sheetrange"))
, mxRbSelection(m_xBuilder->weld_radio_button("selection"))
, mxEdPages(m_xBuilder->weld_entry("pages"))
, mxEdSheets(m_xBuilder->weld_entry("sheets"))
, mxRbLosslessCompression(m_xBuilder->weld_radio_button("losslesscompress"))
, mxRbJPEGCompression(m_xBuilder->weld_radio_button("jpegcompress"))
, mxQualityFrame(m_xBuilder->weld_widget("qualityframe"))
@@ -564,7 +570,7 @@ ImpPDFTabGeneralPage::ImpPDFTabGeneralPage(weld::Container* pPage, weld::DialogC
, mxFtWatermark(m_xBuilder->weld_label("watermarklabel"))
, mxEdWatermark(m_xBuilder->weld_entry("watermarkentry"))
, mxSlidesFt(m_xBuilder->weld_label("slides"))
, mxSheetsFt(m_xBuilder->weld_label("selectedsheets"))
, mxSheetsSelectionFt(m_xBuilder->weld_label("selectedsheets"))
{
}
@@ -579,11 +585,13 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent)
mpParent = pParent;
// init this class data
mxRbRange->connect_toggled( LINK( this, ImpPDFTabGeneralPage, TogglePagesHdl ) );
mxRbPageRange->connect_toggled( LINK( this, ImpPDFTabGeneralPage, TogglePagesHdl ) );
mxRbSheetRange->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleSheetsHdl ) );
mxRbAll->set_active(true);
mxRbAll->connect_toggled( LINK( this, ImpPDFTabGeneralPage, ToggleAllHdl ) );
TogglePagesHdl();
ToggleSheetsHdl();
mxRbSelection->set_sensitive( pParent->mbSelectionPresent );
if ( pParent->mbSelectionPresent )
@@ -687,7 +695,7 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent)
if ( mbIsPresentation )
{
mxRbRange->set_label(mxSlidesFt->get_label());
mxRbPageRange->set_label(mxSlidesFt->get_label());
mxCbExportNotesPages->show();
mxCbExportNotesPages->set_active(pParent->mbExportNotesPages);
mxCbExportNotesPages->connect_toggled( LINK(this, ImpPDFTabGeneralPage, ToggleExportNotesPagesHdl ) );
@@ -714,10 +722,13 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent)
if( mbIsSpreadsheet )
{
mxRbSelection->set_label(mxSheetsFt->get_label());
mxRbSelection->set_label(mxSheetsSelectionFt->get_label());
// tdf#105965 Make Selection/Selected sheets the default PDF export range setting for spreadsheets
mxRbSelection->set_active(true);
mxRbSheetRange->show();
mxEdSheets->show();
mxCbSinglePageSheets->show();
mxCbSinglePageSheets->set_active(pParent->mbSinglePageSheets);
mxCbSinglePageSheets->set_sensitive(!pParent->maConfigItem.IsReadOnly("SinglePageSheets"));
@@ -726,6 +737,9 @@ void ImpPDFTabGeneralPage::SetFilterConfigItem(ImpPDFTabDialog* pParent)
{
mxCbSinglePageSheets->hide();
mxCbSinglePageSheets->set_active(false);
mxRbSheetRange->hide();
mxRbSheetRange->set_active(false);
mxEdSheets->hide();
}
mxCbExportEmptyPages->set_active(!pParent->mbIsSkipEmptyPages);
@@ -773,12 +787,17 @@ void ImpPDFTabGeneralPage::GetFilterConfigItem( ImpPDFTabDialog* pParent )
pParent->mbIsExportPlaceholders = mxCbExportPlaceholders->get_active();
pParent->mbAddStream = mxCbAddStream->get_visible() && mxCbAddStream->get_active();
pParent->mbIsRangeChecked = false;
if( mxRbRange->get_active() )
pParent->mbIsPageRangeChecked = false;
if( mxRbPageRange->get_active() )
{
pParent->mbIsRangeChecked = true;
pParent->mbIsPageRangeChecked = true;
pParent->msPageRange = mxEdPages->get_text(); //FIXME all right on other languages ?
}
else if ( mxRbSheetRange->get_active() )
{
pParent->mbIsSheetRangeChecked = true;
pParent->msSheetRange = mxEdSheets->get_text();
}
else if( mxRbSelection->get_active() )
{
pParent->mbSelectionIsChecked = mxRbSelection->get_active();
@@ -841,6 +860,12 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, TogglePagesHdl, weld::Toggleable&, void)
EnableExportNotesPages();
}
IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleSheetsHdl, weld::Toggleable&, void)
{
ToggleSheetsHdl();
EnableExportNotesPages();
}
IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleSelectionHdl, weld::Toggleable&, void)
{
EnableExportNotesPages();
@@ -848,11 +873,18 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleSelectionHdl, weld::Toggleable&, voi
void ImpPDFTabGeneralPage::TogglePagesHdl()
{
mxEdPages->set_sensitive( mxRbRange->get_active() );
if (mxRbRange->get_active())
mxEdPages->set_sensitive( mxRbPageRange->get_active() );
if (mxRbPageRange->get_active())
mxEdPages->grab_focus();
}
void ImpPDFTabGeneralPage::ToggleSheetsHdl()
{
mxEdSheets->set_sensitive( mxRbSheetRange->get_active() );
if (mxRbSheetRange->get_active())
mxEdSheets->grab_focus();
}
void ImpPDFTabGeneralPage::EnableExportNotesPages()
{
if ( mbIsPresentation )
@@ -915,7 +947,8 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::Toggleable&, voi
if( mxCbAddStream->get_active() )
{
mxRbAll->set_active(true);
mxRbRange->set_sensitive( false );
mxRbPageRange->set_sensitive( false );
mxRbSheetRange->set_sensitive( false );
mxRbSelection->set_sensitive( false );
mxEdPages->set_sensitive( false );
mxRbAll->set_sensitive( false );
@@ -923,7 +956,8 @@ IMPL_LINK_NOARG(ImpPDFTabGeneralPage, ToggleAddStreamHdl, weld::Toggleable&, voi
else
{
mxRbAll->set_sensitive(true);
mxRbRange->set_sensitive(true);
mxRbPageRange->set_sensitive(true);
mxRbSheetRange->set_sensitive(true);
mxRbSelection->set_sensitive(true);
}
}

View File

@@ -128,8 +128,10 @@ class ImpPDFTabDialog final : public SfxTabDialogController
bool mbCanExtractForAccessibility;
css::uno::Reference< css::beans::XMaterialHolder > mxPreparedPasswords;
bool mbIsRangeChecked;
bool mbIsPageRangeChecked;
OUString msPageRange;
bool mbIsSheetRangeChecked;
OUString msSheetRange;
bool mbSelectionIsChecked;
bool mbExportRelativeFsysLinks;
@@ -184,9 +186,11 @@ class ImpPDFTabGeneralPage : public SfxTabPage
ImpPDFTabDialog* mpParent;
std::unique_ptr<weld::RadioButton> mxRbAll;
std::unique_ptr<weld::RadioButton> mxRbRange;
std::unique_ptr<weld::RadioButton> mxRbPageRange;
std::unique_ptr<weld::RadioButton> mxRbSheetRange;
std::unique_ptr<weld::RadioButton> mxRbSelection;
std::unique_ptr<weld::Entry> mxEdPages;
std::unique_ptr<weld::Entry> mxEdSheets;
std::unique_ptr<weld::RadioButton> mxRbLosslessCompression;
std::unique_ptr<weld::RadioButton> mxRbJPEGCompression;
std::unique_ptr<weld::Widget> mxQualityFrame;
@@ -217,10 +221,11 @@ class ImpPDFTabGeneralPage : public SfxTabPage
std::unique_ptr<weld::Label> mxFtWatermark;
std::unique_ptr<weld::Entry> mxEdWatermark;
std::unique_ptr<weld::Label> mxSlidesFt;
std::unique_ptr<weld::Label> mxSheetsFt;
std::unique_ptr<weld::Label> mxSheetsSelectionFt;
DECL_LINK(ToggleAllHdl, weld::Toggleable&, void);
DECL_LINK(TogglePagesHdl, weld::Toggleable&, void);
DECL_LINK(ToggleSheetsHdl, weld::Toggleable&, void);
DECL_LINK(ToggleSelectionHdl, weld::Toggleable&, void);
DECL_LINK(ToggleCompressionHdl, weld::Toggleable&, void);
DECL_LINK(ToggleReduceImageResolutionHdl, weld::Toggleable&, void);
@@ -230,6 +235,7 @@ class ImpPDFTabGeneralPage : public SfxTabPage
DECL_LINK(ToggleExportNotesPagesHdl, weld::Toggleable&, void);
void TogglePagesHdl();
void ToggleSheetsHdl();
void EnableExportNotesPages();
DECL_LINK(TogglePDFVersionOrUniversalAccessibilityHandle, weld::Toggleable&, void);

View File

@@ -59,6 +59,7 @@
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/drawing/XShapes.hpp>
#include <com/sun/star/sheet/XSheetRange.hpp>
#include <com/sun/star/security/XCertificate.hpp>
#include <com/sun/star/beans/XMaterialHolder.hpp>
#include <com/sun/star/xml/crypto/SEInitializer.hpp>
@@ -518,6 +519,14 @@ bool PDFExport::Export( const OUString& rFile, const Sequence< PropertyValue >&
{
if ( rProp.Name == "PageRange" )
rProp.Value >>= aPageRange;
else if ( rProp.Name == "SheetRange" )
{
Reference< frame::XController > xController( Reference< frame::XModel >( mxSrcDoc, UNO_QUERY_THROW )->getCurrentController() );
Reference< sheet::XSheetRange > xView( xController, UNO_QUERY);
OUString aSheetRange;
rProp.Value >>= aSheetRange;
aSelection = xView->getSelectionFromString(aSheetRange);
}
else if ( rProp.Name == "Selection" )
aSelection = rProp.Value;
else if ( rProp.Name == "UseLosslessCompression" )

View File

@@ -60,8 +60,8 @@
</packing>
</child>
<child>
<object class="GtkRadioButton" id="range">
<property name="label" translatable="yes" context="pdfgeneralpage|range">_Pages:</property>
<object class="GtkRadioButton" id="pagerange">
<property name="label" translatable="yes" context="pdfgeneralpage|pagerange">_Pages:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
@@ -74,8 +74,8 @@
<relation type="label-for" target="pages"/>
</accessibility>
<child internal-child="accessible">
<object class="AtkObject" id="range-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|range">Exports the pages you type in the box.</property>
<object class="AtkObject" id="pagerange-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|pagerange">Exports the pages you type in the box.</property>
</object>
</child>
</object>
@@ -84,6 +84,31 @@
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="sheetrange">
<property name="label" translatable="yes" context="pdfgeneralpage|sheetrange">_Sheets:</property>
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="receives-default">False</property>
<property name="halign">start</property>
<property name="valign">center</property>
<property name="use-underline">True</property>
<property name="draw-indicator">True</property>
<property name="group">all</property>
<accessibility>
<relation type="label-for" target="sheets"/>
</accessibility>
<child internal-child="accessible">
<object class="AtkObject" id="sheetrange-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|sheetrange">Exports the sheets you type in the box.</property>
</object>
</child>
</object>
<packing>
<property name="left-attach">0</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkRadioButton" id="selection">
<property name="label" translatable="yes" context="pdfgeneralpage|selection">_Selection</property>
@@ -114,7 +139,7 @@
<property name="width-chars">5</property>
<property name="truncate-multiline">True</property>
<accessibility>
<relation type="labelled-by" target="range"/>
<relation type="labelled-by" target="pagerange"/>
</accessibility>
<child internal-child="accessible">
<object class="AtkObject" id="pages-atkobject">
@@ -127,12 +152,33 @@
<property name="top-attach">1</property>
</packing>
</child>
<child>
<object class="GtkEntry" id="sheets">
<property name="visible">True</property>
<property name="can-focus">True</property>
<property name="activates-default">True</property>
<property name="width-chars">5</property>
<property name="truncate-multiline">True</property>
<accessibility>
<relation type="labelled-by" target="sheetrange"/>
</accessibility>
<child internal-child="accessible">
<object class="AtkObject" id="sheets-atkobject">
<property name="AtkObject::accessible-description" translatable="yes" context="pdfgeneralpage|extended_tip|sheets">Exports the sheets you type in the box.</property>
</object>
</child>
</object>
<packing>
<property name="left-attach">1</property>
<property name="top-attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="slides">
<property name="can-focus">False</property>
<property name="no-show-all">True</property>
<property name="halign">start</property>
<property name="label" translatable="yes" context="pdfgeneralpage|slides">Slides:</property>
<property name="label" translatable="yes" context="pdfgeneralpage|slides">_Slides:</property>
</object>
<packing>
<property name="left-attach">0</property>
@@ -1040,7 +1086,8 @@
<object class="GtkSizeGroup" id="sizegroupLabel">
<widgets>
<widget name="all"/>
<widget name="range"/>
<widget name="pagerange"/>
<widget name="sheetrange"/>
<widget name="selection"/>
<widget name="losslesscompress"/>
<widget name="box3"/>
@@ -1051,6 +1098,7 @@
<object class="GtkSizeGroup" id="sizegroupWidget">
<widgets>
<widget name="pages"/>
<widget name="sheets"/>
<widget name="qualityframe"/>
<widget name="resolution"/>
<widget name="watermarkentry"/>

View File

@@ -3555,6 +3555,7 @@ $(eval $(call gb_UnoApi_add_idlfiles,offapi,com/sun/star/sheet,\
XScenarios \
XScenariosSupplier \
XSelectedSheetsSupplier \
XSheetRange \
XSheetAnnotation \
XSheetAnnotationAnchor \
XSheetAnnotationShapeSupplier \

View File

@@ -0,0 +1,42 @@
/* -*- 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/.
*
* This file incorporates work covered by the following license notice:
*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed
* with this work for additional information regarding copyright
* ownership. The ASF licenses this file to you under the Apache
* License, Version 2.0 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
module com { module sun { module star { module sheet {
/**
@since LibreOffice 24.2
*/
interface XSheetRange: com::sun::star::uno::XInterface
{
/** @returns
selection from given string range
<p> Example: '2-5,7' returns selection of pages/sheets/slides 2,3,4,5,7
*/
any getSelectionFromString( [in] string aStrRange );
};
}; }; }; };
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

View File

@@ -35,6 +35,7 @@
#include <com/sun/star/sheet/XActivationBroadcaster.hpp>
#include <com/sun/star/sheet/XViewPane.hpp>
#include <com/sun/star/sheet/XRangeSelection.hpp>
#include <com/sun/star/sheet/XSheetRange.hpp>
#include <com/sun/star/lang/XServiceInfo.hpp>
#include <com/sun/star/container/XEnumerationAccess.hpp>
#include <com/sun/star/beans/XPropertySet.hpp>
@@ -136,6 +137,7 @@ class ScTabViewObj final : public ScViewPaneBase,
public css::sheet::XViewSplitable,
public css::sheet::XViewFreezable,
public css::sheet::XRangeSelection,
public css::sheet::XSheetRange,
public css::datatransfer::XTransferableSupplier,
public css::sheet::XSelectedSheetsSupplier
{
@@ -196,6 +198,9 @@ public:
virtual void SAL_CALL addSelectionChangeListener( const css::uno::Reference< css::view::XSelectionChangeListener >& xListener ) override;
virtual void SAL_CALL removeSelectionChangeListener( const css::uno::Reference< css::view::XSelectionChangeListener >& xListener ) override;
// XSheetRange
virtual css::uno::Any SAL_CALL getSelectionFromString( const OUString& aStrRange ) override;
//! XPrintable?
// XPropertySet

View File

@@ -53,7 +53,7 @@ class exportToPDF(UITestCase):
self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Checked'])
nonCheckedChildren = ['all', 'changecomment', 'changeform', 'changeinsdel', 'changenone', 'contfacinglayout', 'contlayout', 'fitvis', 'fitwidth',
'fitwin', 'fitzoom', 'losslesscompress', 'openinternet', 'openpdf', 'pageonly', 'printlow', 'printnone', 'range',
'fitwin', 'fitzoom', 'losslesscompress', 'openinternet', 'openpdf', 'pageonly', 'printlow', 'printnone', 'pagerange', 'sheetrange',
'singlelayout', 'thumbs', 'visiblebookmark']
for child in nonCheckedChildren:

View File

@@ -2141,7 +2141,18 @@ void SAL_CALL ScModelObj::render( sal_Int32 nSelRenderer, const uno::Any& aSelec
if (bSinglePageSheets)
nTotalPages = pDocShell->GetDocument().GetTableCount();
sal_Int32 nRenderer = lcl_GetRendererNum( nSelRenderer, aPagesStr, nTotalPages );
// if no pages counted then user must be trying to print sheet/selection without any content (i.e empty)
if (nTotalPages == 0)
{
ScPrintOptions aNewOptions = aStatus.GetOptions();
aNewOptions.SetSkipEmpty(false);
aStatus.SetOptions(aNewOptions);
pPrintFuncCache.reset(new ScPrintFuncCache( pDocShell, aMark, aStatus ));
nTotalPages = pPrintFuncCache->GetPageCount();
}
sal_Int32 nRenderer = lcl_GetRendererNum( nSelRenderer, aPagesStr, nTotalPages ); // 0, "", 0
if ( nRenderer < 0 )
throw lang::IllegalArgumentException();

View File

@@ -43,6 +43,7 @@
#include <cppuhelper/queryinterface.hxx>
#include <toolkit/helper/convert.hxx>
#include <vcl/svapp.hxx>
#include <tools/multisel.hxx>
#include <drawsh.hxx>
#include <drtxtob.hxx>
@@ -485,6 +486,7 @@ uno::Any SAL_CALL ScTabViewObj::queryInterface( const uno::Type& rType )
static_cast<sheet::XViewSplitable*>(this),
static_cast<sheet::XViewFreezable*>(this),
static_cast<sheet::XRangeSelection*>(this),
static_cast<sheet::XSheetRange*>(this),
static_cast<sheet::XSelectedSheetsSupplier*>(this),
static_cast<datatransfer::XTransferableSupplier*>(this));
if ( aReturn.hasValue() )
@@ -594,6 +596,7 @@ uno::Sequence<uno::Type> SAL_CALL ScTabViewObj::getTypes()
cppu::UnoType<sheet::XViewSplitable>::get(),
cppu::UnoType<sheet::XViewFreezable>::get(),
cppu::UnoType<sheet::XRangeSelection>::get(),
cppu::UnoType<sheet::XSheetRange>::get(),
cppu::UnoType<lang::XUnoTunnel>::get(),
cppu::UnoType<sheet::XEnhancedMouseClickBroadcaster>::get(),
cppu::UnoType<sheet::XActivationBroadcaster>::get(),
@@ -950,6 +953,35 @@ uno::Any SAL_CALL ScTabViewObj::getSelection()
return uno::Any(uno::Reference(cppu::getXWeak(pObj.get())));
}
uno::Any SAL_CALL ScTabViewObj::getSelectionFromString( const OUString& aStrRange )
{
ScDocShell* pDocSh = GetViewShell()->GetViewData().GetDocShell();
const sal_Int16 nTabCount = pDocSh->GetDocument().GetTableCount();
StringRangeEnumerator aRangeEnum(aStrRange , 0, nTabCount-1);
// iterate through sheet range
StringRangeEnumerator::Iterator aIter = aRangeEnum.begin();
StringRangeEnumerator::Iterator aEnd = aRangeEnum.end();
ScRangeListRef aRangeList = new ScRangeList;
while ( aIter != aEnd )
{
ScRange currentTab(SCCOL(0), SCROW(0), SCTAB(*aIter));
aRangeList->push_back(currentTab);
++aIter;
}
rtl::Reference<ScCellRangesBase> pObj = new ScCellRangesObj(pDocSh, *aRangeList);
// SetCursorOnly tells the range the specific cells selected are irelevant - maybe could rename?
pObj->SetCursorOnly(true);
return uno::Any(uno::Reference<uno::XInterface>(static_cast<cppu::OWeakObject*>(pObj.get())));
}
// XEnumerationAccess
uno::Reference<container::XEnumeration> SAL_CALL ScTabViewObj::createEnumeration()

View File

@@ -713,7 +713,7 @@ bool ScPrintFunc::AdjustPrintArea( bool bNew )
{
nStartCol = 0;
nStartRow = 0;
if (!rDoc.GetPrintArea( nPrintTab, nEndCol, nEndRow, bNotes ))
if (!rDoc.GetPrintArea( nPrintTab, nEndCol, nEndRow, bNotes ) && aTableParam.bSkipEmpty)
return false; // nothing
bPrintAreaValid = true;
}

View File

@@ -55,7 +55,7 @@ class exportToPDF(UITestCase):
self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Checked'])
nonCheckedChildren = ['changecomment', 'changeform', 'changeinsdel', 'changenone', 'contfacinglayout', 'contlayout', 'fitvis',
'fitwidth', 'fitwin', 'fitzoom', 'losslesscompress', 'openinternet', 'openpdf', 'pageonly', 'printlow', 'printnone', 'range',
'fitwidth', 'fitwin', 'fitzoom', 'losslesscompress', 'openinternet', 'openpdf', 'pageonly', 'printlow', 'printnone', 'pagerange',
'selection', 'singlelayout', 'thumbs', 'visiblebookmark']
for child in nonCheckedChildren:

View File

@@ -51,7 +51,7 @@ class exportToPDF(UITestCase):
self.assertEqual("true", get_state_as_dict(xDialog.getChild(child))['Checked'])
nonCheckedChildren = ['changecomment', 'changeform', 'changeinsdel', 'changenone', 'contfacinglayout', 'contlayout', 'fitvis',
'fitwidth', 'fitwin', 'fitzoom', 'losslesscompress', 'openinternet', 'openpdf', 'pageonly', 'printlow', 'printnone', 'range',
'fitwidth', 'fitwin', 'fitzoom', 'losslesscompress', 'openinternet', 'openpdf', 'pageonly', 'printlow', 'printnone', 'pagerange',
'selection', 'singlelayout', 'thumbs', 'visiblebookmark']
for child in nonCheckedChildren: