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
163d4143
Kaydet (Commit)
163d4143
authored
Şub 21, 2014
tarafından
Andre Fischer
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
123197: Fixed selection problems when switching between normal and master mode.
üst
c2c3bd1c
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
64 additions
and
30 deletions
+64
-30
SlideSorterController.cxx
...ource/ui/slidesorter/controller/SlideSorterController.cxx
+6
-6
SlsCurrentSlideManager.cxx
...urce/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
+4
-1
SlsPageSelector.cxx
sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
+26
-14
SlideSorterModel.hxx
sd/source/ui/slidesorter/inc/model/SlideSorterModel.hxx
+1
-1
SlideSorterModel.cxx
sd/source/ui/slidesorter/model/SlideSorterModel.cxx
+24
-7
SlsViewCacheContext.cxx
sd/source/ui/slidesorter/view/SlsViewCacheContext.cxx
+3
-1
No files found.
sd/source/ui/slidesorter/controller/SlideSorterController.cxx
Dosyayı görüntüle @
163d4143
...
...
@@ -946,6 +946,8 @@ void SlideSorterController::FinishEditModeChange (void)
{
if
(
mrModel
.
GetEditMode
()
==
EM_MASTERPAGE
)
{
mpPageSelector
->
DeselectAllPages
();
// Search for the master page that was determined in
// PrepareEditModeChange() and make it the current page.
PageEnumeration
aAllPages
(
PageEnumerationProvider
::
CreateAllPagesEnumeration
(
mrModel
));
...
...
@@ -955,16 +957,20 @@ void SlideSorterController::FinishEditModeChange (void)
if
(
pDescriptor
->
GetPage
()
==
mpEditModeChangeMasterPage
)
{
GetCurrentSlideManager
()
->
SwitchCurrentSlide
(
pDescriptor
);
mpPageSelector
->
SelectPage
(
pDescriptor
);
break
;
}
}
}
else
{
PageSelector
::
BroadcastLock
aBroadcastLock
(
*
mpPageSelector
);
SharedPageDescriptor
pDescriptor
(
mrModel
.
GetPageDescriptor
(
mnCurrentPageBeforeSwitch
));
GetCurrentSlideManager
()
->
SwitchCurrentSlide
(
pDescriptor
);
// Restore the selection.
mpPageSelector
->
DeselectAllPages
();
::
std
::
vector
<
SdPage
*>::
iterator
iPage
;
for
(
iPage
=
maSelectionBeforeSwitch
.
begin
();
iPage
!=
maSelectionBeforeSwitch
.
end
();
...
...
@@ -1049,12 +1055,6 @@ void SlideSorterController::SetDocumentSlides (const Reference<container::XIndex
PreModelChange
();
mrModel
.
SetDocumentSlides
(
rxSlides
);
mrView
.
Layout
();
// Select just the current slide.
PageSelector
::
BroadcastLock
aBroadcastLock
(
*
mpPageSelector
);
mpPageSelector
->
DeselectAllPages
();
mpPageSelector
->
SelectPage
(
mpCurrentSlideManager
->
GetCurrentSlide
());
}
}
...
...
sd/source/ui/slidesorter/controller/SlsCurrentSlideManager.cxx
Dosyayı görüntüle @
163d4143
...
...
@@ -86,11 +86,14 @@ void CurrentSlideManager::NotifyCurrentSlideChange (const sal_Int32 nSlideIndex)
{
if
(
mnCurrentSlideIndex
!=
nSlideIndex
)
{
PageSelector
::
BroadcastLock
aBroadcastLock
(
mrSlideSorter
.
GetController
().
GetPageSelector
());
mrSlideSorter
.
GetController
().
GetPageSelector
().
DeselectAllPages
();
ReleaseCurrentSlide
();
AcquireCurrentSlide
(
nSlideIndex
);
// Update the selection.
mrSlideSorter
.
GetController
().
GetPageSelector
().
DeselectAllPages
();
if
(
mpCurrentSlide
)
{
mrSlideSorter
.
GetController
().
GetPageSelector
().
SelectPage
(
mpCurrentSlide
);
...
...
sd/source/ui/slidesorter/controller/SlsPageSelector.cxx
Dosyayı görüntüle @
163d4143
...
...
@@ -65,7 +65,7 @@ PageSelector::PageSelector (SlideSorter& rSlideSorter)
mpSelectionAnchor
(),
mpCurrentPage
(),
mnUpdateLockCount
(
0
),
mbIsUpdateCurrentPagePending
(
fals
e
)
mbIsUpdateCurrentPagePending
(
tru
e
)
{
CountSelectedPages
();
}
...
...
@@ -393,27 +393,39 @@ void PageSelector::UpdateCurrentPage (const bool bUpdateOnlyWhenPending)
mbIsUpdateCurrentPagePending
=
false
;
// Make the first selected page the current page.
SharedPageDescriptor
pCurrentPageDescriptor
;
const
sal_Int32
nPageCount
(
GetPageCount
());
for
(
sal_Int32
nIndex
=
0
;
nIndex
<
nPageCount
;
++
nIndex
)
{
SharedPageDescriptor
pDescriptor
(
mrModel
.
GetPageDescriptor
(
nIndex
));
if
(
pDescriptor
&&
pDescriptor
->
HasState
(
PageDescriptor
::
ST_Selected
))
if
(
!
pDescriptor
)
continue
;
if
(
pDescriptor
->
HasState
(
PageDescriptor
::
ST_Selected
))
{
// Switching the current slide normally sets also the selection
// to just the new current slide. To prevent that, we store
// (and at the end of this scope restore) the current selection.
::
boost
::
shared_ptr
<
PageSelection
>
pSelection
(
GetPageSelection
());
mrController
.
GetCurrentSlideManager
()
->
SwitchCurrentSlide
(
pDescriptor
);
// Restore the selection and prevent a recursive call to
// UpdateCurrentPage().
SetPageSelection
(
pSelection
,
false
);
return
;
pCurrentPageDescriptor
=
pDescriptor
;
break
;
}
}
if
(
!
pCurrentPageDescriptor
&&
nPageCount
>
0
)
{
// No page is selected. Make the first slide the current page.
pCurrentPageDescriptor
=
mrModel
.
GetPageDescriptor
(
0
);
}
// No page is selected. Do not change the current slide.
if
(
pCurrentPageDescriptor
)
{
// Switching the current slide normally sets also the
// selection to just the new current slide. To prevent that,
// we store (and at the end of this scope restore) the current
// selection.
::
boost
::
shared_ptr
<
PageSelection
>
pSelection
(
GetPageSelection
());
mrController
.
GetCurrentSlideManager
()
->
SwitchCurrentSlide
(
pCurrentPageDescriptor
);
// Restore the selection and prevent a recursive call to
// UpdateCurrentPage().
SetPageSelection
(
pSelection
,
false
);
}
}
...
...
sd/source/ui/slidesorter/inc/model/SlideSorterModel.hxx
Dosyayı görüntüle @
163d4143
...
...
@@ -56,7 +56,7 @@ namespace sd { namespace slidesorter { namespace model {
class
DocumentPageContainer
;
inline
sal_Int32
FromCoreIndex
(
const
sal_uInt16
nCoreIndex
)
{
return
(
nCoreIndex
-
1
)
/
2
;
}
inline
sal_uInt16
ToCoreIndex
(
const
sal_Int32
nIndex
)
{
return
nIndex
*
2
+
1
;
}
inline
sal_uInt16
ToCoreIndex
(
const
sal_Int32
nIndex
)
{
return
static_cast
<
sal_uInt16
>
(
nIndex
*
2
+
1
)
;
}
/** The model of the slide sorter gives access to the slides that are to be
displayed in the slide sorter view. Via the SetDocumentSlides() method
...
...
sd/source/ui/slidesorter/model/SlideSorterModel.cxx
Dosyayı görüntüle @
163d4143
...
...
@@ -173,7 +173,6 @@ bool SlideSorterModel::SetEditMode (EditMode eEditMode)
{
meEditMode
=
eEditMode
;
UpdatePageList
();
ClearDescriptorList
();
bEditModeChanged
=
true
;
}
return
bEditModeChanged
;
...
...
@@ -424,7 +423,8 @@ void SlideSorterModel::SynchronizeDocumentSelection (void)
while
(
aAllPages
.
HasMoreElements
())
{
SharedPageDescriptor
pDescriptor
(
aAllPages
.
GetNextElement
());
pDescriptor
->
GetPage
()
->
SetSelected
(
pDescriptor
->
HasState
(
PageDescriptor
::
ST_Selected
));
const
bool
bIsSelected
(
pDescriptor
->
HasState
(
PageDescriptor
::
ST_Selected
));
pDescriptor
->
GetPage
()
->
SetSelected
(
bIsSelected
);
}
}
...
...
@@ -439,7 +439,8 @@ void SlideSorterModel::SynchronizeModelSelection (void)
while
(
aAllPages
.
HasMoreElements
())
{
SharedPageDescriptor
pDescriptor
(
aAllPages
.
GetNextElement
());
pDescriptor
->
SetState
(
PageDescriptor
::
ST_Selected
,
pDescriptor
->
GetPage
()
->
IsSelected
());
const
bool
bIsSelected
(
pDescriptor
->
GetPage
()
->
IsSelected
());
pDescriptor
->
SetState
(
PageDescriptor
::
ST_Selected
,
bIsSelected
);
}
}
...
...
@@ -459,11 +460,29 @@ void SlideSorterModel::SetDocumentSlides (
{
::
osl
::
MutexGuard
aGuard
(
maMutex
);
// Reset the current page so to cause everbody to release references to it.
// Make the current selection persistent and then release the
// current set of pages.
SynchronizeDocumentSelection
();
mxSlides
=
NULL
;
ClearDescriptorList
();
// Reset the current page to cause everbody to release references to it.
mrSlideSorter
.
GetController
().
GetCurrentSlideManager
()
->
NotifyCurrentSlideChange
(
-
1
);
// Set the new set of pages.
mxSlides
=
rxSlides
;
Resync
();
AdaptSize
();
SynchronizeModelSelection
();
mrSlideSorter
.
GetController
().
GetPageSelector
().
CountSelectedPages
();
model
::
PageEnumeration
aSelectedPages
(
model
::
PageEnumerationProvider
::
CreateSelectedPagesEnumeration
(
*
this
));
if
(
aSelectedPages
.
HasMoreElements
())
{
SharedPageDescriptor
pDescriptor
(
aSelectedPages
.
GetNextElement
());
mrSlideSorter
.
GetController
().
GetCurrentSlideManager
()
->
NotifyCurrentSlideChange
(
pDescriptor
->
GetPage
());
}
ViewShell
*
pViewShell
=
mrSlideSorter
.
GetViewShell
();
if
(
pViewShell
!=
NULL
)
...
...
@@ -667,7 +686,6 @@ void SlideSorterModel::InsertSlide (SdPage* pPage)
// Update page indices.
UpdateIndices
(
nIndex
+
1
);
OSL_TRACE
(
"page inserted"
);
}
...
...
@@ -705,7 +723,6 @@ void SlideSorterModel::DeleteSlide (const SdPage* pPage)
maPageDescriptors
.
erase
(
maPageDescriptors
.
begin
()
+
nIndex
);
UpdateIndices
(
nIndex
);
}
OSL_TRACE
(
"page removed"
);
}
...
...
sd/source/ui/slidesorter/view/SlsViewCacheContext.cxx
Dosyayı görüntüle @
163d4143
...
...
@@ -70,7 +70,9 @@ void ViewCacheContext::NotifyPreviewCreation (
}
else
{
OSL_ASSERT
(
pDescriptor
);
// It is OK when a preview was created for a page that is not
// currently displayed because both normal and master pages are
// kept in the same cache.
}
}
...
...
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