summaryrefslogtreecommitdiff
path: root/sd/source/ui
diff options
context:
space:
mode:
Diffstat (limited to 'sd/source/ui')
-rw-r--r--sd/source/ui/app/sdmod.cxx12
-rw-r--r--sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx22
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSlotManager.cxx8
-rw-r--r--sd/source/ui/table/TableDesignPane.cxx4
-rw-r--r--sd/source/ui/toolpanel/LayoutMenu.cxx9
5 files changed, 31 insertions, 24 deletions
diff --git a/sd/source/ui/app/sdmod.cxx b/sd/source/ui/app/sdmod.cxx
index f7e74a481740..957b1aa0475b 100644
--- a/sd/source/ui/app/sdmod.cxx
+++ b/sd/source/ui/app/sdmod.cxx
@@ -131,11 +131,6 @@ SdModule::SdModule(SfxObjectFactory* pFact1, SfxObjectFactory* pFact2 )
SdModule::~SdModule()
{
- // Mark the module in the global AppData structure as deleted.
- SdModule** ppShellPointer = (SdModule**)GetAppData(SHL_DRAW);
- if (ppShellPointer != NULL)
- (*ppShellPointer) = NULL;
-
delete pSearchItem;
if( pNumberFormatter )
@@ -152,6 +147,13 @@ SdModule::~SdModule()
}
}
+ mpResourceContainer.reset();
+
+ // Mark the module in the global AppData structure as deleted.
+ SdModule** ppShellPointer = (SdModule**)GetAppData(SHL_DRAW);
+ if (ppShellPointer != NULL)
+ (*ppShellPointer) = NULL;
+
delete mpErrorHdl;
delete static_cast< VirtualDevice* >( mpVirtualRefDevice );
}
diff --git a/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx b/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx
index f634d437ba4b..09c633424c6d 100644
--- a/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx
+++ b/sd/source/ui/slidesorter/cache/SlsQueueProcessor.cxx
@@ -161,11 +161,12 @@ void QueueProcessor::ProcessRequests (void)
{
OSL_ASSERT(mpCacheContext.get()!=NULL);
- while ( ! mrQueue.IsEmpty() && ! mbIsPaused)
+ // Never process more than one request at a time in order to prevent the
+ // lock up of the edit view.
+ if ( ! mrQueue.IsEmpty()
+ && ! mbIsPaused
+ && mpCacheContext->IsIdle())
{
- if ( ! mpCacheContext->IsIdle())
- break;
-
CacheKey aKey = NULL;
RequestPriorityClass ePriorityClass (NOT_VISIBLE);
{
@@ -182,25 +183,12 @@ void QueueProcessor::ProcessRequests (void)
if (aKey != NULL)
ProcessOneRequest(aKey, ePriorityClass);
-
- // Requests of lower priority are processed one at a time.
- {
- ::osl::MutexGuard aGuard (mrQueue.GetMutex());
- if ( ! mrQueue.IsEmpty())
- if (mrQueue.GetFrontPriorityClass() > 0)
- break;
- }
}
// Schedule the processing of the next element(s).
{
::osl::MutexGuard aGuard (mrQueue.GetMutex());
if ( ! mrQueue.IsEmpty())
- /*
- if (bIsShowingFullScreenShow)
- Start(mnTimeBetweenRequestsWhenNotIdle);
- else
- */
Start(mrQueue.GetFrontPriorityClass());
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
index ba8dbb278ca4..4b48aa60678d 100644
--- a/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSlotManager.cxx
@@ -1085,6 +1085,14 @@ void SlotManager::InsertSlide (SfxRequest& rRequest)
rSelector.SelectPage (nInsertionIndex);
}
+ // Is there a stored insertion position?
+ else if (mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() >= 0)
+ {
+ nInsertionIndex
+ = mrSlideSorter.GetController().GetSelectionManager()->GetInsertionPosition() - 1;
+ rSelector.SelectPage(nInsertionIndex);
+ }
+
// Select the last page when there is at least one page.
else if (rSelector.GetPageCount() > 0)
{
diff --git a/sd/source/ui/table/TableDesignPane.cxx b/sd/source/ui/table/TableDesignPane.cxx
index 11cfdbb65ef0..098d71d1f06a 100644
--- a/sd/source/ui/table/TableDesignPane.cxx
+++ b/sd/source/ui/table/TableDesignPane.cxx
@@ -457,6 +457,10 @@ void TableDesignPane::updateLayout()
Point aPos( pValueSet->GetPosPixel() );
+ // The following line may look like a no-op but without it the
+ // control is placed off-screen when RTL is active.
+ pValueSet->SetPosPixel(pValueSet->GetPosPixel());
+
// shift show options section down
const long nOptionsPos = aPos.Y() + aValueSetSize.Height();
for( sal_Int32 nId = FL_STYLE_OPTIONS; nId <= CB_BANDED_COLUMNS; ++nId )
diff --git a/sd/source/ui/toolpanel/LayoutMenu.cxx b/sd/source/ui/toolpanel/LayoutMenu.cxx
index 7a39f1c42f15..e8ebc7fc605d 100644
--- a/sd/source/ui/toolpanel/LayoutMenu.cxx
+++ b/sd/source/ui/toolpanel/LayoutMenu.cxx
@@ -917,8 +917,13 @@ void LayoutMenu::Command (const CommandEvent& rEvent)
if (GetShellManager() != NULL)
GetShellManager()->MoveToTop(this);
if (rEvent.IsMouseEvent())
- mrBase.GetViewFrame()->GetDispatcher()->ExecutePopup(
- SdResId(RID_TASKPANE_LAYOUTMENU_POPUP));
+ {
+ // Do not show the context menu when the mouse was not
+ // pressed over an item.
+ if (GetItemId(rEvent.GetMousePosPixel()) > 0)
+ mrBase.GetViewFrame()->GetDispatcher()->ExecutePopup(
+ SdResId(RID_TASKPANE_LAYOUTMENU_POPUP));
+ }
else
{
// When the command event was not caused by a mouse