[ooo-build-commit] .: 3 commits - sc/inc sc/source
Fridrich Strba
fridrich at kemper.freedesktop.org
Wed Sep 15 06:20:45 PDT 2010
sc/inc/dbcolect.hxx | 6 ++++--
sc/inc/document.hxx | 3 +++
sc/inc/queryparam.hxx | 2 ++
sc/inc/tabprotection.hxx | 2 +-
sc/source/core/data/documen3.cxx | 14 ++++++++++++++
sc/source/core/data/table3.cxx | 3 ++-
sc/source/core/tool/dbcolect.cxx | 16 ++++++++++++----
sc/source/core/tool/queryparam.cxx | 16 +++++++++++++---
sc/source/ui/dbgui/filtdlg.cxx | 2 +-
sc/source/ui/inc/dbfunc.hxx | 2 +-
sc/source/ui/inc/output.hxx | 1 +
sc/source/ui/view/dbfunc.cxx | 15 ++++++++++++---
sc/source/ui/view/gridwin.cxx | 1 +
sc/source/ui/view/gridwin4.cxx | 3 ++-
sc/source/ui/view/output.cxx | 27 ++++++++++++++++-----------
sc/source/ui/view/tabvwshc.cxx | 6 ++++--
16 files changed, 89 insertions(+), 30 deletions(-)
New commits:
commit 21da24d9f65fbc8d7c4d58543d5902048cf96958
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Wed Sep 15 15:15:32 2010 +0200
sc-cellbackground-over-gridlines.diff: Have cell bg paint over the gridlines
n#361360, i#3907
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
index 1e27162..e9e3d30 100644
--- a/sc/source/ui/inc/output.hxx
+++ b/sc/source/ui/inc/output.hxx
@@ -223,6 +223,7 @@ public:
void DrawGrid( BOOL bGrid, BOOL bPage );
void DrawStrings( BOOL bPixelToLogic = FALSE );
+ void DrawDocumentBackground();
void DrawBackground();
void DrawShadow();
void DrawExtraShadow(BOOL bLeft, BOOL bTop, BOOL bRight, BOOL bBottom);
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index 92ed90a..7669b22 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -729,9 +729,10 @@ void ScGridWindow::Draw( SCCOL nX1, SCROW nY1, SCCOL nX2, SCROW nY2, ScUpdateMod
aOutputData.SetSolidBackground(TRUE);
pContentDev->SetMapMode(MAP_PIXEL);
- aOutputData.DrawBackground();
+ aOutputData.DrawDocumentBackground();
if ( bGridFirst && ( bGrid || bPage ) )
aOutputData.DrawGrid( bGrid, bPage );
+ aOutputData.DrawBackground();
if ( bPageMode )
{
// #87655# DrawPagePreview draws complete lines/page numbers, must always be clipped
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index f0056c6..b9253f8 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -795,14 +795,23 @@ BOOL lcl_EqualBack( const RowInfo& rFirst, const RowInfo& rOther,
return TRUE;
}
-void ScOutputData::DrawBackground()
+void ScOutputData::DrawDocumentBackground()
{
- FindRotated(); //! von aussen ?
+ if ( !bSolidBackground )
+ return;
- ScModule* pScMod = SC_MOD();
+ Size aOnePixel = pDev->PixelToLogic(Size(1,1));
+ long nOneX = aOnePixel.Width();
+ long nOneY = aOnePixel.Height();
+ Rectangle aRect(nScrX - nOneX, nScrY - nOneY, nScrX + nScrW, nScrY + nScrH);
+ Color aBgColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
+ pDev->SetFillColor(aBgColor);
+ pDev->DrawRect(aRect);
+}
- // used only if bSolidBackground is set (only for ScGridWindow):
- Color aBgColor( pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
+void ScOutputData::DrawBackground()
+{
+ FindRotated(); //! von aussen ?
Rectangle aRect;
Size aOnePixel = pDev->PixelToLogic(Size(1,1));
@@ -851,7 +860,7 @@ void ScOutputData::DrawBackground()
long nPosX = nScrX;
if ( bLayoutRTL )
nPosX += nMirrorW - nOneX;
- aRect = Rectangle( nPosX,nPosY, nPosX,nPosY+nRowHeight-nOneY );
+ aRect = Rectangle( nPosX, nPosY-nOneY, nPosX, nPosY+nRowHeight-nOneY );
const SvxBrushItem* pOldBackground = NULL;
const SvxBrushItem* pBackground;
@@ -899,15 +908,13 @@ void ScOutputData::DrawBackground()
if (pOldBackground) // ==0 if hidden
{
Color aBackCol = pOldBackground->GetColor();
- if ( bSolidBackground && aBackCol.GetTransparency() )
- aBackCol = aBgColor;
if ( !aBackCol.GetTransparency() ) //! partial transparency?
{
pDev->SetFillColor( aBackCol );
pDev->DrawRect( aRect );
}
}
- aRect.Left() = nPosX;
+ aRect.Left() = nPosX - nSignedOneX;
pOldBackground = pBackground;
}
nPosX += pRowInfo[0].pCellInfo[nX+1].nWidth * nLayoutSign;
@@ -916,8 +923,6 @@ void ScOutputData::DrawBackground()
if (pOldBackground)
{
Color aBackCol = pOldBackground->GetColor();
- if ( bSolidBackground && aBackCol.GetTransparency() )
- aBackCol = aBgColor;
if ( !aBackCol.GetTransparency() ) //! partial transparency?
{
pDev->SetFillColor( aBackCol );
commit 2e8133c7f6c0065a0e6457c4ee1421491dbb6f44
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Wed Sep 15 15:11:13 2010 +0200
sc-dbrange-dynamic-resize.diff: Dynamically resize filtered range.
n#352662, i#85305
Dynamically resize filtered range when new data rows are present.
diff --git a/sc/inc/dbcolect.hxx b/sc/inc/dbcolect.hxx
index 8be1868..0066650 100644
--- a/sc/inc/dbcolect.hxx
+++ b/sc/inc/dbcolect.hxx
@@ -91,6 +91,7 @@ private:
ScQueryConnect eQueryConnect[MAXQUERY];
BOOL bIsAdvanced; // TRUE if created by advanced filter
ScRange aAdvSource; // source range
+ SCROW nDynamicEndRow;
// SubTotalParam
BOOL bSubRemoveOnly;
BOOL bSubReplace;
@@ -138,9 +139,10 @@ public:
const String& GetName() const { return aName; }
void GetName(String& rName) const { rName = aName; }
void SetName(const String& rName) { aName = rName; }
- void GetArea(SCTAB& rTab, SCCOL& rCol1, SCROW& rRow1, SCCOL& rCol2, SCROW& rRow2) const;
- SC_DLLPUBLIC void GetArea(ScRange& rRange) const;
+ void GetArea(SCTAB& rTab, SCCOL& rCol1, SCROW& rRow1, SCCOL& rCol2, SCROW& rRow2, bool bUseDynamicRange = false) const;
+ SC_DLLPUBLIC void GetArea(ScRange& rRange, bool bUseDynamicRange = false) const;
void SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
+ void SetDynamicEndRow(SCROW nRow);
void MoveTo(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2);
BOOL IsByRow() const { return bByRow; }
void SetByRow(BOOL bByR) { bByRow = bByR; }
diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx
index 1e3df03..0458db3 100644
--- a/sc/inc/document.hxx
+++ b/sc/inc/document.hxx
@@ -1475,6 +1475,9 @@ public:
SCTAB nTab, ScQueryParam& rQueryParam );
void GetUpperCellString(SCCOL nCol, SCROW nRow, SCTAB nTab, String& rStr);
+ /** Update the dynamic end row position of a current data area. */
+ void UpdateDynamicEndRow(ScDBData& rDBData) const;
+
BOOL GetFilterEntries( SCCOL nCol, SCROW nRow, SCTAB nTab,
bool bFilter, TypedScStrCollection& rStrings, bool& rHasDates);
SC_DLLPUBLIC BOOL GetFilterEntriesArea( SCCOL nCol, SCROW nStartRow, SCROW nEndRow,
diff --git a/sc/inc/queryparam.hxx b/sc/inc/queryparam.hxx
index bc50237..01ddffb 100644
--- a/sc/inc/queryparam.hxx
+++ b/sc/inc/queryparam.hxx
@@ -86,6 +86,8 @@ struct SC_DLLPUBLIC ScQueryParam : public ScQueryParamBase, public ScQueryParamT
SCTAB nDestTab;
SCCOL nDestCol;
SCROW nDestRow;
+ SCROW nDynamicEndRow;
+ bool bUseDynamicRange;
ScQueryParam();
ScQueryParam( const ScQueryParam& r );
diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx
index ef49171..c42e816 100644
--- a/sc/source/core/data/documen3.cxx
+++ b/sc/source/core/data/documen3.cxx
@@ -1334,6 +1334,18 @@ BOOL ScDocument::HasRowHeader( SCCOL nStartCol, SCROW nStartRow, SCCOL nEndCol,
//return FALSE;
}
+void ScDocument::UpdateDynamicEndRow(ScDBData& rDBData) const
+{
+ SCCOL nCol1, nCol2;
+ SCROW nRow1, nRow2;
+ SCTAB nTab;
+ rDBData.GetArea(nTab, nCol1, nRow1, nCol2, nRow2);
+ SCCOL nCol1a = nCol1, nCol2a = nCol2;
+ SCROW nRow1a = nRow1, nRow2a = nRow2;
+ GetDataArea(nTab, nCol1a, nRow1a, nCol2a, nRow2a, false, false);
+ rDBData.SetDynamicEndRow(nRow2a);
+}
+
//
// GetFilterEntries - Eintraege fuer AutoFilter-Listbox
//
@@ -1346,6 +1358,7 @@ BOOL ScDocument::GetFilterEntries(
ScDBData* pDBData = pDBCollection->GetDBAtCursor(nCol, nRow, nTab, FALSE); //!??
if (pDBData)
{
+ UpdateDynamicEndRow(*pDBData);
SCTAB nAreaTab;
SCCOL nStartCol;
SCROW nStartRow;
@@ -1357,6 +1370,7 @@ BOOL ScDocument::GetFilterEntries(
ScQueryParam aParam;
pDBData->GetQueryParam( aParam );
+ nEndRow = aParam.nDynamicEndRow;
rStrings.SetCaseSensitive( aParam.bCaseSens );
// return all filter entries, if a filter condition is connected with a boolean OR
diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx
index 4537cda..3ac8469 100644
--- a/sc/source/core/data/table3.cxx
+++ b/sc/source/core/data/table3.cxx
@@ -1633,6 +1633,7 @@ SCSIZE ScTable::Query(ScQueryParam& rParamOrg, BOOL bKeepSub)
BOOL* pSpecial = new BOOL[nEntryCount];
lcl_PrepareQuery( pDocument, this, aParam, pSpecial );
+ SCROW nEndRow = aParam.bUseDynamicRange ? aParam.nDynamicEndRow : aParam.nRow2;
if (!aParam.bInplace)
{
nOutRow = aParam.nDestRow + nHeader;
@@ -1641,7 +1642,7 @@ SCSIZE ScTable::Query(ScQueryParam& rParamOrg, BOOL bKeepSub)
aParam.nDestCol, aParam.nDestRow, aParam.nDestTab );
}
- for (SCROW j=aParam.nRow1 + nHeader; j<=aParam.nRow2; j++)
+ for (SCROW j=aParam.nRow1 + nHeader; j<=nEndRow; j++)
{
BOOL bResult; // Filterergebnis
BOOL bValid = ValidQuery(j, aParam, pSpecial);
diff --git a/sc/source/core/tool/dbcolect.cxx b/sc/source/core/tool/dbcolect.cxx
index 92fef62..07bbba4 100644
--- a/sc/source/core/tool/dbcolect.cxx
+++ b/sc/source/core/tool/dbcolect.cxx
@@ -378,18 +378,20 @@ String ScDBData::GetOperations() const
return aVal;
}
-void ScDBData::GetArea(SCTAB& rTab, SCCOL& rCol1, SCROW& rRow1, SCCOL& rCol2, SCROW& rRow2) const
+void ScDBData::GetArea(SCTAB& rTab, SCCOL& rCol1, SCROW& rRow1, SCCOL& rCol2, SCROW& rRow2,
+ bool bUseDynamicRange) const
{
rTab = nTable;
rCol1 = nStartCol;
rRow1 = nStartRow;
rCol2 = nEndCol;
- rRow2 = nEndRow;
+ rRow2 = bUseDynamicRange ? nDynamicEndRow : nEndRow;
}
-void ScDBData::GetArea(ScRange& rRange) const
+void ScDBData::GetArea(ScRange& rRange, bool bUseDynamicRange) const
{
- rRange = ScRange( nStartCol,nStartRow,nTable, nEndCol,nEndRow,nTable );
+ SCROW nNewEndRow = bUseDynamicRange ? nDynamicEndRow : nEndRow;
+ rRange = ScRange( nStartCol, nStartRow, nTable, nEndCol, nNewEndRow, nTable );
}
void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
@@ -401,6 +403,11 @@ void ScDBData::SetArea(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW
nEndRow = nRow2;
}
+void ScDBData::SetDynamicEndRow(SCROW nRow)
+{
+ nDynamicEndRow = nRow;
+}
+
void ScDBData::MoveTo(SCTAB nTab, SCCOL nCol1, SCROW nRow1, SCCOL nCol2, SCROW nRow2)
{
USHORT i;
@@ -508,6 +515,7 @@ void ScDBData::GetQueryParam( ScQueryParam& rQueryParam ) const
rQueryParam.nDestTab = nQueryDestTab;
rQueryParam.nDestCol = nQueryDestCol;
rQueryParam.nDestRow = nQueryDestRow;
+ rQueryParam.nDynamicEndRow = nDynamicEndRow;
rQueryParam.Resize( MAXQUERY );
for (SCSIZE i=0; i<MAXQUERY; i++)
diff --git a/sc/source/core/tool/queryparam.cxx b/sc/source/core/tool/queryparam.cxx
index 7b129e6..80dd170 100644
--- a/sc/source/core/tool/queryparam.cxx
+++ b/sc/source/core/tool/queryparam.cxx
@@ -185,7 +185,8 @@ ScQueryParam::ScQueryParam() :
ScQueryParam::ScQueryParam( const ScQueryParam& r ) :
ScQueryParamBase(r),
ScQueryParamTable(r),
- bDestPers(r.bDestPers), nDestTab(r.nDestTab), nDestCol(r.nDestCol), nDestRow(r.nDestRow)
+ bDestPers(r.bDestPers), nDestTab(r.nDestTab), nDestCol(r.nDestCol), nDestRow(r.nDestRow),
+ nDynamicEndRow(r.nDynamicEndRow), bUseDynamicRange(r.bUseDynamicRange)
{
}
@@ -195,7 +196,9 @@ ScQueryParam::ScQueryParam( const ScDBQueryParamInternal& r ) :
bDestPers(true),
nDestTab(0),
nDestCol(0),
- nDestRow(0)
+ nDestRow(0),
+ nDynamicEndRow(0),
+ bUseDynamicRange(false)
{
}
@@ -229,6 +232,8 @@ void ScQueryParam::ClearDestParams()
nDestTab = 0;
nDestCol = 0;
nDestRow = 0;
+ nDynamicEndRow = 0;
+ bUseDynamicRange = false;
}
//------------------------------------------------------------------------
@@ -251,6 +256,8 @@ ScQueryParam& ScQueryParam::operator=( const ScQueryParam& r )
bDuplicate = r.bDuplicate;
bByRow = r.bByRow;
bDestPers = r.bDestPers;
+ nDynamicEndRow = r.nDynamicEndRow;
+ bUseDynamicRange = r.bUseDynamicRange;
maEntries = r.maEntries;
@@ -289,7 +296,9 @@ BOOL ScQueryParam::operator==( const ScQueryParam& rOther ) const
&& (bDestPers == rOther.bDestPers)
&& (nDestTab == rOther.nDestTab)
&& (nDestCol == rOther.nDestCol)
- && (nDestRow == rOther.nDestRow) )
+ && (nDestRow == rOther.nDestRow)
+ && (nDynamicEndRow == rOther.nDynamicEndRow)
+ && (bUseDynamicRange == rOther.bUseDynamicRange) )
{
bEqual = TRUE;
for ( SCSIZE i=0; i<nUsed && bEqual; i++ )
@@ -313,6 +322,7 @@ void ScQueryParam::MoveToDest()
nCol2 = sal::static_int_cast<SCCOL>( nCol2 + nDifX );
nRow2 = sal::static_int_cast<SCROW>( nRow2 + nDifY );
nTab = sal::static_int_cast<SCTAB>( nTab + nDifZ );
+ nDynamicEndRow = sal::static_int_cast<SCROW>( nDynamicEndRow + nDifY );
size_t n = maEntries.size();
for (size_t i=0; i<n; i++)
maEntries[i].nField += nDifX;
diff --git a/sc/source/ui/dbgui/filtdlg.cxx b/sc/source/ui/dbgui/filtdlg.cxx
index 728bf21..649e886 100644
--- a/sc/source/ui/dbgui/filtdlg.cxx
+++ b/sc/source/ui/dbgui/filtdlg.cxx
@@ -451,7 +451,7 @@ void ScFilterDlg::UpdateValueList( USHORT nList )
USHORT nOffset = GetSliderPos();
SCTAB nTab = nSrcTab;
SCROW nFirstRow = theQueryData.nRow1;
- SCROW nLastRow = theQueryData.nRow2;
+ SCROW nLastRow = theQueryData.bUseDynamicRange ? theQueryData.nDynamicEndRow : theQueryData.nRow2;
mbHasDates[nOffset+nList-1] = false;
// erstmal ohne die erste Zeile
diff --git a/sc/source/ui/inc/dbfunc.hxx b/sc/source/ui/inc/dbfunc.hxx
index 257e3fa..d517694 100644
--- a/sc/source/ui/inc/dbfunc.hxx
+++ b/sc/source/ui/inc/dbfunc.hxx
@@ -77,7 +77,7 @@ public:
void GotoDBArea( const String& rDBName );
// DB-Bereich vom Cursor
- ScDBData* GetDBData( BOOL bMarkArea = TRUE, ScGetDBMode eMode = SC_DB_MAKE, ScGetDBSelection eSel = SC_DBSEL_KEEP );
+ ScDBData* GetDBData( BOOL bMarkArea = TRUE, ScGetDBMode eMode = SC_DB_MAKE, ScGetDBSelection eSel = SC_DBSEL_KEEP, bool bShrinkToData = false, bool bExpandRows = false );
void NotifyCloseDbNameDlg( const ScDBCollection& rNewColl, const List& rDelAreaList );
diff --git a/sc/source/ui/view/dbfunc.cxx b/sc/source/ui/view/dbfunc.cxx
index 308df11..2eefb06 100644
--- a/sc/source/ui/view/dbfunc.cxx
+++ b/sc/source/ui/view/dbfunc.cxx
@@ -104,7 +104,7 @@ void ScDBFunc::GotoDBArea( const String& rDBName )
// aktuellen Datenbereich fuer Sortieren / Filtern suchen
-ScDBData* ScDBFunc::GetDBData( BOOL bMark, ScGetDBMode eMode, ScGetDBSelection eSel )
+ScDBData* ScDBFunc::GetDBData( BOOL bMark, ScGetDBMode eMode, ScGetDBSelection eSel, bool bShrinkToData, bool bExpandRows )
{
ScDocShell* pDocSh = GetViewData()->GetDocShell();
ScDBData* pData = NULL;
@@ -179,10 +179,19 @@ ScDBData* ScDBFunc::GetDBData( BOOL bMark, ScGetDBMode eMode, ScGetDBSelection e
GetViewData()->GetTabNo() ),
eMode, SC_DBSEL_KEEP );
- if ( pData && bMark )
+ if (!pData)
+ return NULL;
+
+ if (bExpandRows)
+ {
+ // Dynamically expand rows to include any new data rows that are
+ // immediately below the original range.
+ GetViewData()->GetDocument()->UpdateDynamicEndRow(*pData);
+ }
+ if (bMark)
{
ScRange aFound;
- pData->GetArea(aFound);
+ pData->GetArea(aFound, bExpandRows);
MarkRange( aFound, FALSE );
}
return pData;
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index 508bb55..9df1f7e 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -1314,6 +1314,7 @@ void ScGridWindow::ExecFilter( ULONG nSel,
pViewData->GetViewShell()->UpdateInputHandler();
}
+ aParam.bUseDynamicRange = true;
pViewData->GetView()->Query( aParam, NULL, TRUE );
pDBData->SetQueryParam( aParam ); // speichern
}
diff --git a/sc/source/ui/view/tabvwshc.cxx b/sc/source/ui/view/tabvwshc.cxx
index ace1aae..1beb938 100644
--- a/sc/source/ui/view/tabvwshc.cxx
+++ b/sc/source/ui/view/tabvwshc.cxx
@@ -175,8 +175,9 @@ SfxModelessDialog* ScTabViewShell::CreateRefDialog(
SCITEM_QUERYDATA,
SCITEM_QUERYDATA );
- ScDBData* pDBData = GetDBData( TRUE, SC_DB_MAKE, SC_DBSEL_ROW_DOWN);
+ ScDBData* pDBData = GetDBData(true, SC_DB_MAKE, SC_DBSEL_ROW_DOWN, true, true);
pDBData->GetQueryParam( aQueryParam );
+ aQueryParam.bUseDynamicRange = true;
ScQueryItem aItem( SCITEM_QUERYDATA, GetViewData(), &aQueryParam );
ScRange aAdvSource;
@@ -200,8 +201,9 @@ SfxModelessDialog* ScTabViewShell::CreateRefDialog(
SCITEM_QUERYDATA,
SCITEM_QUERYDATA );
- ScDBData* pDBData = GetDBData( TRUE, SC_DB_MAKE, SC_DBSEL_ROW_DOWN);
+ ScDBData* pDBData = GetDBData(true, SC_DB_MAKE, SC_DBSEL_ROW_DOWN, true, true);
pDBData->GetQueryParam( aQueryParam );
+ aQueryParam.bUseDynamicRange = true;
aArgSet.Put( ScQueryItem( SCITEM_QUERYDATA,
GetViewData(),
commit 07633360157600a9fa3677a3c116f345f3159da3
Author: Kohei Yoshida <kyoshida at novell.com>
Date: Wed Sep 15 15:06:06 2010 +0200
enable-sheet-protection-options.diff: Enable sheet protection options
diff --git a/sc/inc/tabprotection.hxx b/sc/inc/tabprotection.hxx
index 99294a6..965ea30 100644
--- a/sc/inc/tabprotection.hxx
+++ b/sc/inc/tabprotection.hxx
@@ -35,7 +35,7 @@
#include <vector>
#include <boost/shared_ptr.hpp>
-#define ENABLE_SHEET_PROTECTION 0
+#define ENABLE_SHEET_PROTECTION 1
class ScDocument;
class ScTableProtectionImpl;
More information about the ooo-build-commit
mailing list