parent
e987cc993b
commit
fbc285d9a2
@ -0,0 +1,232 @@
|
||||
From d6f5d4ee2cd0654497f1af37421d788411db762c Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Thu, 8 May 2014 14:27:53 +0100
|
||||
Subject: [PATCH] add a status bar icon to fit slide to window
|
||||
|
||||
Change-Id: I2c1d1fc7425b0aaad2a2445e0ac71ddc38410fdb
|
||||
---
|
||||
icon-themes/galaxy/svx/res/zoom_page_statusbar.png | Bin 0 -> 418 bytes
|
||||
include/svx/dialogs.hrc | 6 ++-
|
||||
include/svx/zoomctrl.hxx | 15 ++++++-
|
||||
sd/source/ui/app/sddll.cxx | 1 +
|
||||
sd/uiconfig/simpress/statusbar/statusbar.xml | 1 +
|
||||
svx/source/stbctrls/modctrl.cxx | 7 ----
|
||||
svx/source/stbctrls/stbctrls.src | 13 ++++++
|
||||
svx/source/stbctrls/zoomctrl.cxx | 46 +++++++++++++++++----
|
||||
8 files changed, 70 insertions(+), 19 deletions(-)
|
||||
create mode 100644 icon-themes/galaxy/svx/res/zoom_page_statusbar.png
|
||||
|
||||
diff --git a/icon-themes/galaxy/svx/res/zoom_page_statusbar.png b/icon-themes/galaxy/svx/res/zoom_page_statusbar.png
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..5fb2d59cf7549dbb665e9efc81f7a94c0f4e4980
|
||||
GIT binary patch
|
||||
literal 418
|
||||
zcmeAS@N?(olHy`uVBq!ia0vp^d>}Rl8<3oNC%zs?aTa()76ZkPfH31!Z9ZwBAbW|Y
|
||||
zuPggKRt_Em37r=8g+L+M%#er@=ltB<)VvZPmw~~#C^fMpHASI3vm`^o-P1Q9MK6_|
|
||||
zfq_xN)5S4F<9zQVMQ;~Jf#dbYn_qus^<|gZlVlLhn=WYb!{o$M=H~ea)HIsH)+Pzs
|
||||
zA7O3wT<!RQnWHN9NYYN((@OU~+wN#=ygT#n`E&LEns;A*lE%|;bX!fb0n4?}O5<dX
|
||||
zBP$yYG;y3?)w5~73FFjRqO6}+&3XR1*2|{TW5xd8YXhd0oV`(6ZYBHdQ~vRt-H{3P
|
||||
zO?(bLo2Cj)Kj7T+iE+x#cR@XuxEqyJ&pA!l`f-MH`F|l}t@3pYiCo3ckIt24FnsJV
|
||||
zH9R!$%!)HFo`>b1UD040>XycHdeXZiA&sHNY`QYup??3pE~^|b;>byRP|ES8VP<`l
|
||||
z`Gp^To!vF}*zE59-5A<;>sii<PkM)B1AO)tz3bC*Kj0PpkDZ@gvQdmDelaNUJYD@<
|
||||
J);T3K0RSRFrP=@h
|
||||
|
||||
literal 0
|
||||
HcmV?d00001
|
||||
|
||||
diff --git a/include/svx/dialogs.hrc b/include/svx/dialogs.hrc
|
||||
index 4c3d681..797acfa 100644
|
||||
--- a/include/svx/dialogs.hrc
|
||||
+++ b/include/svx/dialogs.hrc
|
||||
@@ -996,12 +996,14 @@
|
||||
#define RID_SVXSTR_DOC_LOAD (SVX_OOO_BUILD_START + 6) // 1236
|
||||
#define RID_SVXSTR_ERR_OLD_PASSWD (SVX_OOO_BUILD_START + 7) // 1237
|
||||
#define RID_SVXSTR_ERR_REPEAT_PASSWD (SVX_OOO_BUILD_START + 8) // 1238
|
||||
+#define RID_SVXBMP_ZOOM_PAGE (SVX_OOO_BUILD_START + 9) // 1239
|
||||
+#define RID_SVXSTR_FIT_SLIDE (SVX_OOO_BUILD_START + 10) // 1240
|
||||
|
||||
// sidebar-related resources (defined in the appropriate .hrc's)
|
||||
-#define RID_SVX_SIDEBAR_BEGIN (RID_SVX_START + 1240)
|
||||
+#define RID_SVX_SIDEBAR_BEGIN (RID_SVX_START + 1241)
|
||||
|
||||
// !!! IMPORTANT: consider and update RID_SVXSTR_NEXTFREE when introducing new RIDs for Strings !!!
|
||||
-#define RID_SVXSTR_NEXTFREE (RID_SVX_START + 1270)
|
||||
+#define RID_SVXSTR_NEXTFREE (RID_SVX_START + 1271)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// if we have _a_lot_ time, we should group the resource ids by type, instead
|
||||
diff --git a/include/svx/zoomctrl.hxx b/include/svx/zoomctrl.hxx
|
||||
index 429ee9c..5d7950f 100644
|
||||
--- a/include/svx/zoomctrl.hxx
|
||||
+++ b/include/svx/zoomctrl.hxx
|
||||
@@ -21,8 +21,7 @@
|
||||
|
||||
#include <sfx2/stbitem.hxx>
|
||||
#include <svx/svxdllapi.h>
|
||||
-
|
||||
-// class SvxZoomToolBoxControl -------------------------------------------
|
||||
+#include <vcl/image.hxx>
|
||||
|
||||
class SVX_DLLPUBLIC SvxZoomStatusBarControl : public SfxStatusBarControl
|
||||
{
|
||||
@@ -42,6 +41,18 @@ public:
|
||||
|
||||
};
|
||||
|
||||
+class SVX_DLLPUBLIC SvxZoomPageStatusBarControl : public SfxStatusBarControl
|
||||
+{
|
||||
+private:
|
||||
+ Image maImage;
|
||||
+public:
|
||||
+ virtual void Paint( const UserDrawEvent& rEvt ) SAL_OVERRIDE;
|
||||
+ virtual bool MouseButtonDown( const MouseEvent & rEvt ) SAL_OVERRIDE;
|
||||
+
|
||||
+ SFX_DECL_STATUSBAR_CONTROL();
|
||||
+
|
||||
+ SvxZoomPageStatusBarControl(sal_uInt16 nSlotId, sal_uInt16 nId, StatusBar& rStb);
|
||||
+};
|
||||
|
||||
#endif
|
||||
|
||||
diff --git a/sd/source/ui/app/sddll.cxx b/sd/source/ui/app/sddll.cxx
|
||||
index f7a27c0..b37d934 100644
|
||||
--- a/sd/source/ui/app/sddll.cxx
|
||||
+++ b/sd/source/ui/app/sddll.cxx
|
||||
@@ -242,6 +242,7 @@ void SdDLL::RegisterControllers()
|
||||
SvxCTLTextTbxCtrl::RegisterControl(SID_ATTR_PARA_RIGHT_TO_LEFT, pMod);
|
||||
|
||||
// register StatusBarControls
|
||||
+ SvxZoomPageStatusBarControl::RegisterControl( SID_ZOOM_ENTIRE_PAGE, pMod );
|
||||
SvxZoomStatusBarControl::RegisterControl( SID_ATTR_ZOOM, pMod );
|
||||
SvxPosSizeStatusBarControl::RegisterControl( SID_ATTR_SIZE, pMod );
|
||||
SvxModifyControl::RegisterControl( SID_DOC_MODIFIED, pMod );
|
||||
diff --git a/sd/uiconfig/simpress/statusbar/statusbar.xml b/sd/uiconfig/simpress/statusbar/statusbar.xml
|
||||
index 24224fe..78042ef 100644
|
||||
--- a/sd/uiconfig/simpress/statusbar/statusbar.xml
|
||||
+++ b/sd/uiconfig/simpress/statusbar/statusbar.xml
|
||||
@@ -24,6 +24,7 @@
|
||||
<statusbar:statusbaritem xlink:href=".uno:Signature" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="16"/>
|
||||
<statusbar:statusbaritem xlink:href=".uno:PageStatus" statusbar:align="left" statusbar:width="124"/>
|
||||
<statusbar:statusbaritem xlink:href=".uno:LayoutStatus" statusbar:align="left" statusbar:autosize="true" statusbar:width="54"/>
|
||||
+ <statusbar:statusbaritem xlink:href=".uno:ZoomPage" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="9"/>
|
||||
<statusbar:statusbaritem xlink:href=".uno:ZoomSlider" statusbar:align="center" statusbar:ownerdraw="true" statusbar:width="130"/>
|
||||
<statusbar:statusbaritem xlink:href=".uno:Zoom" statusbar:align="center" statusbar:width="36"/>
|
||||
</statusbar:statusbar>
|
||||
diff --git a/svx/source/stbctrls/modctrl.cxx b/svx/source/stbctrls/modctrl.cxx
|
||||
index db94f49..aff7e75 100644
|
||||
--- a/svx/source/stbctrls/modctrl.cxx
|
||||
+++ b/svx/source/stbctrls/modctrl.cxx
|
||||
@@ -137,8 +137,6 @@ void SvxModifyControl::_repaint()
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
|
||||
-namespace {
|
||||
-
|
||||
/**
|
||||
* Given a bounding rectangle and an image, determine the top-left position
|
||||
* of the image so that the image would look centered both horizontally and
|
||||
@@ -160,9 +158,6 @@ Point centerImage(const Rectangle& rBoundingRect, const Image& rImg)
|
||||
return aPt;
|
||||
}
|
||||
|
||||
-}
|
||||
-
|
||||
-
|
||||
void SvxModifyControl::Paint( const UserDrawEvent& rUsrEvt )
|
||||
{
|
||||
OutputDevice* pDev = rUsrEvt.GetDevice();
|
||||
diff --git a/svx/source/stbctrls/stbctrls.src b/svx/source/stbctrls/stbctrls.src
|
||||
index 8d5beeb..5987d7a 100644
|
||||
--- a/svx/source/stbctrls/stbctrls.src
|
||||
+++ b/svx/source/stbctrls/stbctrls.src
|
||||
@@ -120,6 +120,11 @@ String RID_SVXSTR_DOC_LOAD
|
||||
Text [ en-US ] = "Loading document...";
|
||||
};
|
||||
|
||||
+String RID_SVXSTR_FIT_SLIDE
|
||||
+{
|
||||
+ Text [ en-US ] = "Fit slide to current window.";
|
||||
+};
|
||||
+
|
||||
// PopupMenu -------------------------------------------------------------
|
||||
Menu RID_SVXMNU_ZOOM
|
||||
{
|
||||
@@ -337,5 +342,13 @@ Image RID_SVXBMP_DOC_MODIFIED_FEEDBACK
|
||||
};
|
||||
MaskColor = STD_MASKCOLOR;
|
||||
};
|
||||
+Image RID_SVXBMP_ZOOM_PAGE
|
||||
+{
|
||||
+ ImageBitmap = Bitmap
|
||||
+ {
|
||||
+ File = "zoom_page_statusbar.png" ;
|
||||
+ };
|
||||
+ MaskColor = STD_MASKCOLOR;
|
||||
+};
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
diff --git a/svx/source/stbctrls/zoomctrl.cxx b/svx/source/stbctrls/zoomctrl.cxx
|
||||
index b5be076..229f98d 100644
|
||||
--- a/svx/source/stbctrls/zoomctrl.cxx
|
||||
+++ b/svx/source/stbctrls/zoomctrl.cxx
|
||||
@@ -25,7 +25,8 @@
|
||||
|
||||
#include <svx/dialogs.hrc>
|
||||
|
||||
-#include "svx/zoomctrl.hxx"
|
||||
+#include <svx/zoomctrl.hxx>
|
||||
+#include <svx/zoomslideritem.hxx>
|
||||
#include <sfx2/zoomitem.hxx>
|
||||
#include "stbctrls.h"
|
||||
#include <svx/dialmgr.hxx>
|
||||
@@ -95,7 +96,6 @@ void ZoomPopup_Impl::Select()
|
||||
}
|
||||
|
||||
// class SvxZoomStatusBarControl ------------------------------------------
|
||||
-
|
||||
SvxZoomStatusBarControl::SvxZoomStatusBarControl( sal_uInt16 _nSlotId,
|
||||
sal_uInt16 _nId,
|
||||
StatusBar& rStb ) :
|
||||
@@ -183,5 +183,41 @@ void SvxZoomStatusBarControl::Command( const CommandEvent& rCEvt )
|
||||
SfxStatusBarControl::Command( rCEvt );
|
||||
}
|
||||
|
||||
+SFX_IMPL_STATUSBAR_CONTROL(SvxZoomPageStatusBarControl,SfxVoidItem);
|
||||
+
|
||||
+SvxZoomPageStatusBarControl::SvxZoomPageStatusBarControl(sal_uInt16 _nSlotId,
|
||||
+ sal_uInt16 _nId, StatusBar& rStb)
|
||||
+ : SfxStatusBarControl(_nSlotId, _nId, rStb)
|
||||
+ , maImage(SVX_RES(RID_SVXBMP_ZOOM_PAGE))
|
||||
+{
|
||||
+ GetStatusBar().SetQuickHelpText(GetId(), SVX_RESSTR(RID_SVXSTR_FIT_SLIDE));
|
||||
+}
|
||||
+
|
||||
+extern Point centerImage(const Rectangle& rBoundingRect, const Image& rImg);
|
||||
+
|
||||
+void SvxZoomPageStatusBarControl::Paint(const UserDrawEvent& rUsrEvt)
|
||||
+{
|
||||
+ OutputDevice* pDev = rUsrEvt.GetDevice();
|
||||
+ Rectangle aRect = rUsrEvt.GetRect();
|
||||
+ Point aPt = centerImage(aRect, maImage);
|
||||
+ pDev->DrawImage(aPt, maImage);
|
||||
+}
|
||||
+
|
||||
+bool SvxZoomPageStatusBarControl::MouseButtonDown(const MouseEvent&)
|
||||
+{
|
||||
+ SvxZoomItem aZoom( SVX_ZOOM_WHOLEPAGE, 0, GetId() );
|
||||
+
|
||||
+ ::com::sun::star::uno::Any a;
|
||||
+ INetURLObject aObj( m_aCommandURL );
|
||||
+
|
||||
+ ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue > aArgs( 1 );
|
||||
+ aArgs[0].Name = aObj.GetURLPath();
|
||||
+ aZoom.QueryValue( a );
|
||||
+ aArgs[0].Value = a;
|
||||
+
|
||||
+ execute( aArgs );
|
||||
+
|
||||
+ return true;
|
||||
+}
|
||||
|
||||
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|
||||
|
@ -0,0 +1,77 @@
|
||||
From b179235f702e474b115ca479b603052f422346fd Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||
Date: Wed, 7 May 2014 16:16:17 +0100
|
||||
Subject: [PATCH] center slide after changing zoom
|
||||
|
||||
Change-Id: I08698b06d0485d2cd3573af665e0621b42d37349
|
||||
---
|
||||
sd/source/ui/inc/ViewShell.hxx | 1 +
|
||||
sd/source/ui/view/viewshe2.cxx | 27 +++++++++++++++++++++++++++
|
||||
sd/source/ui/view/viewshel.cxx | 1 +
|
||||
3 files changed, 29 insertions(+)
|
||||
|
||||
diff --git a/sd/source/ui/inc/ViewShell.hxx b/sd/source/ui/inc/ViewShell.hxx
|
||||
index ce5ea31..87edbc5 100644
|
||||
--- a/sd/source/ui/inc/ViewShell.hxx
|
||||
+++ b/sd/source/ui/inc/ViewShell.hxx
|
||||
@@ -206,6 +206,7 @@ public:
|
||||
virtual void UpdateScrollBars (void);
|
||||
void Scroll(long nX, long nY);
|
||||
void ScrollLines(long nX, long nY);
|
||||
+ void ScrollCenter();
|
||||
virtual void SetZoom(long nZoom);
|
||||
virtual void SetZoomRect(const Rectangle& rZoomRect);
|
||||
void InitWindows(const Point& rViewOrigin, const Size& rViewSize,
|
||||
diff --git a/sd/source/ui/view/viewshe2.cxx b/sd/source/ui/view/viewshe2.cxx
|
||||
index 5f98d68..8f91d6c 100644
|
||||
--- a/sd/source/ui/view/viewshe2.cxx
|
||||
+++ b/sd/source/ui/view/viewshe2.cxx
|
||||
@@ -365,6 +365,33 @@ void ViewShell::SetZoom(long nZoom)
|
||||
UpdateScrollBars();
|
||||
}
|
||||
|
||||
+namespace
|
||||
+{
|
||||
+ void CenterScrollBar(ScrollBar *pBar)
|
||||
+ {
|
||||
+ long nVisSize = pBar->GetVisibleSize();
|
||||
+ long nMin = pBar->GetRangeMin();
|
||||
+ long nMax = pBar->GetRangeMax();
|
||||
+ long nLen = nMax - nMin - nVisSize;
|
||||
+ long nPos = nMin + nLen/2;
|
||||
+ pBar->DoScroll(nPos);
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+void ViewShell::ScrollCenter()
|
||||
+{
|
||||
+ if (mpHorizontalScrollBar.get() != NULL)
|
||||
+ CenterScrollBar(mpHorizontalScrollBar.get());
|
||||
+
|
||||
+ //zoom mode with no panning of the current slide, i.e. the
|
||||
+ //scrollbar is in change slide mode not pan slide mode
|
||||
+ if (IsPageFlipMode())
|
||||
+ return;
|
||||
+
|
||||
+ if (mpVerticalScrollBar.get() != NULL)
|
||||
+ CenterScrollBar(mpVerticalScrollBar.get());
|
||||
+}
|
||||
+
|
||||
/**
|
||||
* Set zoom rectangle for active window. Sets all split windows to the same zoom
|
||||
* factor.
|
||||
diff --git a/sd/source/ui/view/viewshel.cxx b/sd/source/ui/view/viewshel.cxx
|
||||
index 28e272e..17bcf5f 100644
|
||||
--- a/sd/source/ui/view/viewshel.cxx
|
||||
+++ b/sd/source/ui/view/viewshel.cxx
|
||||
@@ -683,6 +683,7 @@ bool ViewShell::HandleScrollCommand(const CommandEvent& rCEvt, ::sd::Window* pWi
|
||||
nNewZoom = std::min( (long) pWin->GetMaxZoom(), basegfx::zoomtools::zoomIn( nOldZoom ));
|
||||
|
||||
SetZoom( nNewZoom );
|
||||
+ ScrollCenter(); //center slide after changing zoom
|
||||
Invalidate( SID_ATTR_ZOOM );
|
||||
Invalidate( SID_ATTR_ZOOMSLIDER );
|
||||
|
||||
--
|
||||
1.9.0
|
||||
|
Loading…
Reference in new issue