summaryrefslogtreecommitdiff
path: root/sd/source
diff options
context:
space:
mode:
authorAndre Fischer <af@openoffice.org>2010-02-23 18:31:24 +0100
committerAndre Fischer <af@openoffice.org>2010-02-23 18:31:24 +0100
commit1fbf7cba10381a461245d599ecedaa1cb7958f72 (patch)
treee0c9cde012f1375886c0067682e9fe993621cd3c /sd/source
parent3c7bf4b67dbe92880d3cb8b7fb24a882651a7ba1 (diff)
renaissance1: #i107215# Focus can be moved with Ctrl+Cursor Keys.
Diffstat (limited to 'sd/source')
-rw-r--r--sd/source/ui/slidesorter/controller/SlsFocusManager.cxx8
-rw-r--r--sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx23
-rw-r--r--sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx3
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx5
-rw-r--r--sd/source/ui/slidesorter/inc/view/SlsTheme.hxx2
-rw-r--r--sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx40
-rw-r--r--sd/source/ui/slidesorter/view/SlsTheme.cxx24
7 files changed, 79 insertions, 26 deletions
diff --git a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
index f633060e4dc7..62adb2d939ec 100644
--- a/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsFocusManager.cxx
@@ -302,12 +302,12 @@ void FocusManager::ShowFocusIndicator (
// Scroll the focused page object into the visible area and repaint
// it, so that the focus indicator becomes visible.
mrSlideSorter.GetController().GetSelectionManager()->MakeRectangleVisible (
- GetFocusedPageDescriptor()->GetBoundingBox());
+ mrSlideSorter.GetView().GetLayouter().GetPageObjectBox(
+ rpDescriptor->GetPageIndex(), true));
}
-#ifndef UNIFY_FOCUS_AND_CURRENT_PAGE
- mrSlideSorter.GetView().RequestRepaint (rpDescriptor);
-#endif
+ mrSlideSorter.GetView().RequestRepaint(rpDescriptor);
+
NotifyFocusChangeListeners();
}
}
diff --git a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
index 203cc087df56..b4e8f8e919b3 100644
--- a/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
+++ b/sd/source/ui/slidesorter/controller/SlsSelectionFunction.cxx
@@ -466,7 +466,8 @@ BOOL SelectionFunction::KeyInput (const KeyEvent& rEvent)
FocusManager& rFocusManager (mrController.GetFocusManager());
BOOL bResult = FALSE;
- switch (rEvent.GetKeyCode().GetCode())
+ const KeyCode& rCode (rEvent.GetKeyCode());
+ switch (rCode.GetCode())
{
case KEY_RETURN:
if (rFocusManager.HasFocus())
@@ -485,7 +486,7 @@ BOOL SelectionFunction::KeyInput (const KeyEvent& rEvent)
if ( ! rFocusManager.IsFocusShowing())
rFocusManager.ShowFocus();
else
- if (rEvent.GetKeyCode().IsShift())
+ if (rCode.IsShift())
rFocusManager.MoveFocus (FocusManager::FMD_LEFT);
else
rFocusManager.MoveFocus (FocusManager::FMD_RIGHT);
@@ -527,25 +528,25 @@ BOOL SelectionFunction::KeyInput (const KeyEvent& rEvent)
// Move the focus indicator left.
case KEY_LEFT:
- MoveFocus(FocusManager::FMD_LEFT, rEvent.GetKeyCode().IsShift());
+ MoveFocus(FocusManager::FMD_LEFT, rCode.IsShift(), rCode.IsMod1());
bResult = TRUE;
break;
// Move the focus indicator right.
case KEY_RIGHT:
- MoveFocus(FocusManager::FMD_RIGHT, rEvent.GetKeyCode().IsShift());
+ MoveFocus(FocusManager::FMD_RIGHT, rCode.IsShift(), rCode.IsMod1());
bResult = TRUE;
break;
// Move the focus indicator up.
case KEY_UP:
- MoveFocus(FocusManager::FMD_UP, rEvent.GetKeyCode().IsShift());
+ MoveFocus(FocusManager::FMD_UP, rCode.IsShift(), rCode.IsMod1());
bResult = TRUE;
break;
// Move the focus indicator down.
case KEY_DOWN:
- MoveFocus(FocusManager::FMD_DOWN, rEvent.GetKeyCode().IsShift());
+ MoveFocus(FocusManager::FMD_DOWN, rCode.IsShift(), rCode.IsMod1());
bResult = TRUE;
break;
@@ -590,7 +591,7 @@ BOOL SelectionFunction::KeyInput (const KeyEvent& rEvent)
break;
case KEY_F10:
- if (rEvent.GetKeyCode().IsShift())
+ if (rCode.IsShift())
{
DeselectAllPages();
mrController.GetPageSelector().SelectPage(
@@ -613,7 +614,8 @@ BOOL SelectionFunction::KeyInput (const KeyEvent& rEvent)
void SelectionFunction::MoveFocus (
const FocusManager::FocusMoveDirection eDirection,
- const bool bIsShiftDown)
+ const bool bIsShiftDown,
+ const bool bIsControlDown)
{
// Remember the anchor of shift key multi selection.
if (bIsShiftDown)
@@ -662,6 +664,11 @@ void SelectionFunction::MoveFocus (
}
}
}
+ else if (bIsControlDown)
+ {
+ // When control is pressed then do not alter the selection or the
+ // current page, just move the focus.
+ }
else
{
// Without shift just select the focused page.
diff --git a/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx b/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx
index 0eb5710e8bbd..c6b9834d3f5f 100644
--- a/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx
+++ b/sd/source/ui/slidesorter/inc/controller/SlsSelectionFunction.hxx
@@ -233,7 +233,8 @@ private:
void MoveFocus (
const FocusManager::FocusMoveDirection eDirection,
- const bool bIsShiftDown);
+ const bool bIsShiftDown,
+ const bool bIsControlDown);
};
} } } // end of namespace ::sd::slidesorter::controller
diff --git a/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx b/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx
index ec42b3db4fd9..586ee7474fb8 100644
--- a/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx
+++ b/sd/source/ui/slidesorter/inc/view/SlsPageObjectPainter.hxx
@@ -83,6 +83,7 @@ private:
::boost::scoped_ptr<FramePainter> mpShadowPainter;
Bitmap maNormalBackground;
Bitmap maSelectionBackground;
+ Bitmap maFocusedSelectionBackground;
Bitmap maMouseOverBackground;
void PaintBackground (
@@ -101,6 +102,10 @@ private:
OutputDevice& rDevice,
const model::SharedPageDescriptor& rpDescriptor) const;
void PrepareBackgrounds (OutputDevice& rDevice);
+ void PaintBorder (
+ OutputDevice& rDevice,
+ const Theme::GradientColorType eColorType,
+ const Rectangle& rBox) const;
Bitmap CreateBackgroundBitmap(
const OutputDevice& rReferenceDevice,
const Theme::GradientColorType eType) const;
diff --git a/sd/source/ui/slidesorter/inc/view/SlsTheme.hxx b/sd/source/ui/slidesorter/inc/view/SlsTheme.hxx
index 851f8c4ffc49..5cadda3fafdf 100644
--- a/sd/source/ui/slidesorter/inc/view/SlsTheme.hxx
+++ b/sd/source/ui/slidesorter/inc/view/SlsTheme.hxx
@@ -84,6 +84,7 @@ public:
enum GradientColorType {
NormalPage,
SelectedPage,
+ SelectedAndFocusedPage,
MouseOverPage
};
enum GradientColorClass {
@@ -115,6 +116,7 @@ private:
ColorData maBackgroundColor;
GradientDescriptor maNormalGradient;
GradientDescriptor maSelectedGradient;
+ GradientDescriptor maSelectedAndFocusedGradient;
GradientDescriptor maMouseOverGradient;
BitmapEx maRawShadow;
BitmapEx maInsertionIndicator;
diff --git a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
index 9921e3ca070c..0a83736aa689 100644
--- a/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
+++ b/sd/source/ui/slidesorter/view/SlsPageObjectPainter.cxx
@@ -235,6 +235,7 @@ PageObjectPainter::PageObjectPainter (
mpShadowPainter(),
maNormalBackground(),
maSelectionBackground(),
+ maFocusedSelectionBackground(),
maMouseOverBackground()
{
LocalResource aResource (IMG_ICONS);
@@ -294,6 +295,7 @@ void PageObjectPainter::NotifyResize (void)
{
maNormalBackground.SetEmpty();
maSelectionBackground.SetEmpty();
+ maFocusedSelectionBackground.SetEmpty();
maMouseOverBackground.SetEmpty();
}
@@ -326,15 +328,22 @@ void PageObjectPainter::PaintBackground (
}
else if (rpDescriptor->HasState(model::PageDescriptor::ST_Selected))
{
- rDevice.DrawBitmap(
- aBox.TopLeft(),
- maSelectionBackground);
+ if (rpDescriptor->HasState(model::PageDescriptor::ST_Focused))
+ rDevice.DrawBitmap(
+ aBox.TopLeft(),
+ maFocusedSelectionBackground);
+ else
+ rDevice.DrawBitmap(
+ aBox.TopLeft(),
+ maSelectionBackground);
}
else
{
rDevice.DrawBitmap(
aBox.TopLeft(),
maNormalBackground);
+ if (rpDescriptor->HasState(model::PageDescriptor::ST_Focused))
+ PaintBorder(rDevice, Theme::SelectedPage, aBox);
}
}
@@ -519,6 +528,8 @@ void PageObjectPainter::PrepareBackgrounds (OutputDevice& rDevice)
{
maNormalBackground = CreateBackgroundBitmap(rDevice, Theme::NormalPage);
maSelectionBackground = CreateBackgroundBitmap(rDevice, Theme::SelectedPage);
+ maFocusedSelectionBackground = CreateBackgroundBitmap(
+ rDevice, Theme::SelectedAndFocusedPage);
maMouseOverBackground = CreateBackgroundBitmap(rDevice, Theme::MouseOverPage);
}
}
@@ -563,12 +574,7 @@ Bitmap PageObjectPainter::CreateBackgroundBitmap(
aBitmapDevice.DrawLine(Point(0,nY), Point(aSize.Width(),nY));
}
- // Paint the border.
- aBitmapDevice.SetFillColor();
- aBitmapDevice.SetLineColor(mpTheme->GetGradientColor(eColorType, Theme::Border2));
- aBitmapDevice.DrawRect(Rectangle(Point(0,0),aSize));
- aBitmapDevice.SetLineColor(mpTheme->GetGradientColor(eColorType, Theme::Border1));
- aBitmapDevice.DrawLine(Point(0,0),Point(aSize.Width()-1,0));
+ PaintBorder(aBitmapDevice, eColorType, Rectangle(Point(0,0), aSize));
// Get bounding box of the preview around which a shadow is painted.
// Compensate for the border around the preview.
@@ -590,6 +596,22 @@ Bitmap PageObjectPainter::CreateBackgroundBitmap(
+void PageObjectPainter::PaintBorder (
+ OutputDevice& rDevice,
+ const Theme::GradientColorType eColorType,
+ const Rectangle& rBox) const
+{
+ const Size aSize (mpPageObjectLayouter->GetPageObjectSize());
+ rDevice.SetFillColor();
+ rDevice.SetLineColor(mpTheme->GetGradientColor(eColorType, Theme::Border2));
+ rDevice.DrawRect(rBox);
+ rDevice.SetLineColor(mpTheme->GetGradientColor(eColorType, Theme::Border1));
+ rDevice.DrawLine(rBox.TopLeft(), rBox.TopRight());
+}
+
+
+
+
//===== FramePainter ==========================================================
PageObjectPainter::FramePainter::FramePainter (const BitmapEx& rShadowBitmap)
diff --git a/sd/source/ui/slidesorter/view/SlsTheme.cxx b/sd/source/ui/slidesorter/view/SlsTheme.cxx
index a40dda166eee..5fa5300bd213 100644
--- a/sd/source/ui/slidesorter/view/SlsTheme.cxx
+++ b/sd/source/ui/slidesorter/view/SlsTheme.cxx
@@ -87,6 +87,7 @@ Theme::Theme (const ::boost::shared_ptr<controller::Properties>& rpProperties)
: maBackgroundColor(rpProperties->GetBackgroundColor().GetColor()),
maNormalGradient(),
maSelectedGradient(),
+ maSelectedAndFocusedGradient(),
maMouseOverGradient(),
maRawShadow(),
maInsertionIndicator()
@@ -107,15 +108,21 @@ void Theme::Update (const ::boost::shared_ptr<controller::Properties>& rpPropert
maBackgroundColor = rpProperties->GetBackgroundColor().GetColor();
#ifdef USE_SYSTEM_SELECTION_COLOR
const ColorData aSelectionColor (rpProperties->GetSelectionColor().GetColor());
+
maSelectedGradient.maFillColor1 = ChangeLuminance(aSelectionColor, +50);
maSelectedGradient.maFillColor2 = ChangeLuminance(aSelectionColor, -10);
maSelectedGradient.maBorderColor1 = ChangeLuminance(aSelectionColor, -10);
maSelectedGradient.maBorderColor2 = ChangeLuminance(aSelectionColor, -30);
- maMouseOverGradient.maFillColor1 = ChangeLuminance(aSelectionColor, -30);
- maMouseOverGradient.maFillColor2 = ChangeLuminance(aSelectionColor, -90);
- maMouseOverGradient.maBorderColor1 = ChangeLuminance(aSelectionColor, -30);
- maMouseOverGradient.maBorderColor2 = ChangeLuminance(aSelectionColor, -10);
+ maSelectedAndFocusedGradient.maFillColor1 = ChangeLuminance(aSelectionColor, +30);
+ maSelectedAndFocusedGradient.maFillColor2 = ChangeLuminance(aSelectionColor, -30);
+ maSelectedAndFocusedGradient.maBorderColor1 = ChangeLuminance(aSelectionColor, -30);
+ maSelectedAndFocusedGradient.maBorderColor2 = ChangeLuminance(aSelectionColor, -50);
+
+ maMouseOverGradient.maFillColor1 = ChangeLuminance(aSelectionColor, +90);
+ maMouseOverGradient.maFillColor2 = ChangeLuminance(aSelectionColor, +30);
+ maMouseOverGradient.maBorderColor1 = ChangeLuminance(aSelectionColor, +10);
+ maMouseOverGradient.maBorderColor2 = ChangeLuminance(aSelectionColor, +30);
#else
@@ -124,6 +131,11 @@ void Theme::Update (const ::boost::shared_ptr<controller::Properties>& rpPropert
maSelectedGradient.maBorderColor1 = 0x6db5e1;
maSelectedGradient.maBorderColor2 = 0x0e85cd;
+ maSelectedAndFocusedGradient.maFillColor1 = 0xb7daf0;
+ maSelectedAndFocusedGradient.maFillColor2 = 0x6db5e1;
+ maSelectedAndFocusedGradient.maBorderColor1 = 0x6db5e1;
+ maSelectedAndFocusedGradient.maBorderColor2 = 0x0e85cd;
+
maMouseOverGradient.maFillColor1 = 0x0e85cd;
maMouseOverGradient.maFillColor2 = 0x044c99;
maMouseOverGradient.maBorderColor1 = 0x6db5e1;
@@ -236,6 +248,10 @@ ColorData Theme::GetGradientColor (
pDescriptor = &maSelectedGradient;
break;
+ case SelectedAndFocusedPage:
+ pDescriptor = &maSelectedAndFocusedGradient;
+ break;
+
case MouseOverPage:
pDescriptor = &maMouseOverGradient;
break;