Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
core
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
LibreOffice
core
Commits
2c5ea08b
Kaydet (Commit)
2c5ea08b
authored
Kas 27, 2013
tarafından
Markus Mohrhard
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
iterating through all cells is not a good idea, fdo#71934
Change-Id: I370f641f0fffed8835a32c577c2f2e841ba419aa
üst
f0701470
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
65 additions
and
25 deletions
+65
-25
column.hxx
sc/inc/column.hxx
+1
-0
document.hxx
sc/inc/document.hxx
+1
-0
table.hxx
sc/inc/table.hxx
+1
-0
column2.cxx
sc/source/core/data/column2.cxx
+30
-3
document.cxx
sc/source/core/data/document.cxx
+12
-0
table2.cxx
sc/source/core/data/table2.cxx
+10
-0
cellsh.cxx
sc/source/ui/view/cellsh.cxx
+10
-22
No files found.
sc/inc/column.hxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -506,6 +506,7 @@ public:
size_t
GetNoteCount
()
const
;
SCROW
GetNotePosition
(
size_t
nIndex
)
const
;
void
GetAllNoteEntries
(
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
;
void
GetNotesInRange
(
SCROW
nStartRow
,
SCROW
nEndRow
,
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
;
SCROW
GetCellNotesMaxRow
()
const
;
SCROW
GetCellNotesMinRow
()
const
;
...
...
sc/inc/document.hxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -909,6 +909,7 @@ public:
SCROW
GetNotePosition
(
SCTAB
nTab
,
SCCOL
nCol
,
size_t
nIndex
)
const
;
SC_DLLPUBLIC
void
GetAllNoteEntries
(
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
;
void
GetNotesInRange
(
const
ScRangeList
&
rRange
,
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
;
bool
ContainsNotesInRange
(
const
ScRangeList
&
rRange
)
const
;
SC_DLLPUBLIC
void
SetDrawPageSize
(
SCTAB
nTab
);
...
...
sc/inc/table.hxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -382,6 +382,7 @@ public:
SCROW
GetNotePosition
(
SCCOL
nCol
,
size_t
nIndex
)
const
;
void
GetAllNoteEntries
(
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
;
void
GetNotesInRange
(
const
ScRange
&
rRange
,
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
;
bool
ContainsNotesInRange
(
const
ScRange
&
rRange
)
const
;
bool
TestInsertRow
(
SCCOL
nStartCol
,
SCCOL
nEndCol
,
SCROW
nStartRow
,
SCSIZE
nSize
)
const
;
...
...
sc/source/core/data/column2.cxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -1262,9 +1262,13 @@ class NoteEntryCollector
std
::
vector
<
sc
::
NoteEntry
>&
mrNotes
;
SCTAB
mnTab
;
SCCOL
mnCol
;
SCROW
mnStartRow
;
SCROW
mnEndRow
;
public
:
NoteEntryCollector
(
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
,
SCTAB
nTab
,
SCCOL
nCol
)
:
mrNotes
(
rNotes
),
mnTab
(
nTab
),
mnCol
(
nCol
)
{}
NoteEntryCollector
(
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
,
SCTAB
nTab
,
SCCOL
nCol
,
SCROW
nStartRow
=
0
,
SCROW
nEndRow
=
MAXROW
)
:
mrNotes
(
rNotes
),
mnTab
(
nTab
),
mnCol
(
nCol
),
mnStartRow
(
nStartRow
),
mnEndRow
(
nEndRow
)
{}
void
operator
()
(
const
sc
::
CellNoteStoreType
::
value_type
&
node
)
const
{
...
...
@@ -1275,7 +1279,14 @@ public:
sc
::
cellnote_block
::
const_iterator
it
=
sc
::
cellnote_block
::
begin
(
*
node
.
data
);
sc
::
cellnote_block
::
const_iterator
itEnd
=
sc
::
cellnote_block
::
end
(
*
node
.
data
);
size_t
nOffset
=
0
;
for
(;
it
!=
itEnd
;
++
it
,
++
nOffset
)
if
(
nTopRow
<
size_t
(
mnStartRow
))
{
std
::
advance
(
it
,
mnStartRow
-
nTopRow
);
nOffset
=
mnStartRow
-
nTopRow
;
}
for
(;
it
!=
itEnd
&&
nTopRow
+
nOffset
<=
size_t
(
mnEndRow
);
++
it
,
++
nOffset
)
{
ScAddress
aPos
(
mnCol
,
nTopRow
+
nOffset
,
mnTab
);
mrNotes
.
push_back
(
sc
::
NoteEntry
(
aPos
,
*
it
));
...
...
@@ -1290,6 +1301,22 @@ void ScColumn::GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const
std
::
for_each
(
maCellNotes
.
begin
(),
maCellNotes
.
end
(),
NoteEntryCollector
(
rNotes
,
nTab
,
nCol
));
}
void
ScColumn
::
GetNotesInRange
(
SCROW
nStartRow
,
SCROW
nEndRow
,
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
{
std
::
pair
<
sc
::
CellNoteStoreType
::
const_iterator
,
size_t
>
aPos
=
maCellNotes
.
position
(
nStartRow
);
sc
::
CellNoteStoreType
::
const_iterator
it
=
aPos
.
first
;
if
(
it
==
maCellNotes
.
end
())
// Invalid row number.
return
;
std
::
pair
<
sc
::
CellNoteStoreType
::
const_iterator
,
size_t
>
aEndPos
=
maCellNotes
.
position
(
nEndRow
);
sc
::
CellNoteStoreType
::
const_iterator
itEnd
=
aEndPos
.
first
;
std
::
for_each
(
it
,
itEnd
,
NoteEntryCollector
(
rNotes
,
nTab
,
nCol
,
nStartRow
,
nEndRow
));
}
SCSIZE
ScColumn
::
GetEmptyLinesInBlock
(
SCROW
nStartRow
,
SCROW
nEndRow
,
ScDirection
eDir
)
const
{
// Given a range of rows, find a top or bottom empty segment.
...
...
sc/source/core/data/document.cxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -6226,6 +6226,18 @@ void ScDocument::GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const
}
}
void
ScDocument
::
GetNotesInRange
(
const
ScRangeList
&
rRange
,
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
{
for
(
size_t
i
=
0
;
i
<
rRange
.
size
();
++
i
)
{
const
ScRange
*
pRange
=
rRange
[
i
];
for
(
SCTAB
nTab
=
pRange
->
aStart
.
Tab
();
nTab
<
pRange
->
aEnd
.
Tab
();
++
nTab
)
{
maTabs
[
nTab
]
->
GetNotesInRange
(
*
pRange
,
rNotes
);
}
}
}
bool
ScDocument
::
ContainsNotesInRange
(
const
ScRangeList
&
rRange
)
const
{
for
(
size_t
i
=
0
;
i
<
rRange
.
size
();
++
i
)
...
...
sc/source/core/data/table2.cxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -1516,6 +1516,16 @@ void ScTable::GetAllNoteEntries( std::vector<sc::NoteEntry>& rNotes ) const
aCol
[
nCol
].
GetAllNoteEntries
(
rNotes
);
}
void
ScTable
::
GetNotesInRange
(
const
ScRange
&
rRange
,
std
::
vector
<
sc
::
NoteEntry
>&
rNotes
)
const
{
SCROW
nStartRow
=
rRange
.
aStart
.
Row
();
SCROW
nEndRow
=
rRange
.
aEnd
.
Row
();
for
(
SCCOL
nCol
=
rRange
.
aStart
.
Col
();
nCol
<=
rRange
.
aEnd
.
Col
();
++
nCol
)
{
aCol
[
nCol
].
GetNotesInRange
(
nStartRow
,
nEndRow
,
rNotes
);
}
}
bool
ScTable
::
ContainsNotesInRange
(
const
ScRange
&
rRange
)
const
{
SCROW
nStartRow
=
rRange
.
aStart
.
Row
();
...
...
sc/source/ui/view/cellsh.cxx
Dosyayı görüntüle @
2c5ea08b
...
...
@@ -935,34 +935,22 @@ void ScCellShell::GetState(SfxItemSet &rSet)
ScRangeListRef
aRangesRef
;
pData
->
GetMultiArea
(
aRangesRef
);
ScRangeList
aRanges
=
*
aRangesRef
;
size_t
nRangeSize
=
aRanges
.
size
();
for
(
size_t
i
=
0
;
i
<
nRangeSize
&&
!
bEnable
;
++
i
)
std
::
vector
<
sc
::
NoteEntry
>
aNotes
;
pDoc
->
GetNotesInRange
(
aRanges
,
aNotes
);
for
(
std
::
vector
<
sc
::
NoteEntry
>::
const_iterator
itr
=
aNotes
.
begin
(),
itrEnd
=
aNotes
.
end
();
itr
!=
itrEnd
;
++
itr
)
{
const
ScRange
*
pRange
=
aRanges
[
i
];
const
SCROW
nRow0
=
pRange
->
aStart
.
Row
();
const
SCROW
nRow1
=
pRange
->
aEnd
.
Row
();
const
SCCOL
nCol0
=
pRange
->
aStart
.
Col
();
const
SCCOL
nCol1
=
pRange
->
aEnd
.
Col
();
const
SCTAB
nRangeTab
=
pRange
->
aStart
.
Tab
();
// Check by each cell
// nCellNumber < pDoc->CountNotes() with const size_t nCellNumber = ( nRow1 - nRow0 ) * ( nCol1 - nCol0 );
for
(
SCROW
nRow
=
nRow0
;
nRow
<=
nRow1
&&
!
bEnable
;
++
nRow
)
const
ScAddress
&
rAdr
=
itr
->
maPos
;
if
(
pDoc
->
IsBlockEditable
(
rAdr
.
Tab
(),
rAdr
.
Col
(),
rAdr
.
Row
(),
rAdr
.
Col
(),
rAdr
.
Row
()
))
{
for
(
SCCOL
nCol
=
nCol0
;
nCol
<=
nCol1
;
++
nCol
)
if
(
itr
->
mpNote
->
IsCaptionShown
()
!=
bSearchForHidden
)
{
const
ScPostIt
*
pNote
=
pDoc
->
GetNote
(
nCol
,
nRow
,
nRangeTab
);
if
(
pNote
&&
pDoc
->
IsBlockEditable
(
nRangeTab
,
nCol
,
nRow
,
nCol
,
nRow
)
)
{
if
(
pNote
->
IsCaptionShown
()
!=
bSearchForHidden
)
{
bEnable
=
true
;
break
;
}
}
bEnable
=
true
;
break
;
}
}
}
}
if
(
!
bEnable
)
rSet
.
DisableItem
(
nWhich
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment