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
fb8f83c1
Kaydet (Commit)
fb8f83c1
authored
May 11, 2015
tarafından
Tomaž Vajngerl
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
refactor TabBar to use RenderContext
Change-Id: Id29cbf407fe96fceb326b1197991baf4698e5177
üst
2db379e2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
250 additions
and
268 deletions
+250
-268
tabbar.hxx
include/svtools/tabbar.hxx
+4
-3
tabbar.cxx
svtools/source/control/tabbar.cxx
+246
-265
No files found.
include/svtools/tabbar.hxx
Dosyayı görüntüle @
fb8f83c1
...
...
@@ -358,8 +358,9 @@ private:
using
Window
::
ImplInit
;
SVT_DLLPRIVATE
void
ImplInit
(
WinBits
nWinStyle
);
SVT_DLLPRIVATE
void
ImplInitSettings
(
bool
bFont
,
bool
bBackground
);
SVT_DLLPRIVATE
void
ImplGetColors
(
Color
&
rFaceColor
,
Color
&
rFaceTextColor
,
Color
&
rSelectColor
,
Color
&
rSelectTextColor
);
SVT_DLLPRIVATE
void
ImplGetColors
(
const
StyleSettings
&
rStyleSettings
,
Color
&
rFaceColor
,
Color
&
rFaceTextColor
,
Color
&
rSelectColor
,
Color
&
rSelectTextColor
);
SVT_DLLPRIVATE
void
ImplShowPage
(
sal_uInt16
nPos
);
SVT_DLLPRIVATE
bool
ImplCalcWidth
();
SVT_DLLPRIVATE
void
ImplFormat
();
...
...
@@ -369,7 +370,7 @@ private:
SVT_DLLPRIVATE
void
ImplSelect
();
SVT_DLLPRIVATE
void
ImplActivatePage
();
SVT_DLLPRIVATE
bool
ImplDeactivatePage
();
SVT_DLLPRIVATE
void
ImplPrePaint
();
SVT_DLLPRIVATE
void
ImplPrePaint
(
vcl
::
RenderContext
&
rRenderContext
);
SVT_DLLPRIVATE
ImplTabBarItem
*
ImplGetLastTabBarItem
(
sal_uInt16
nItemCount
);
SVT_DLLPRIVATE
Rectangle
ImplGetInsertTabRect
(
ImplTabBarItem
*
pItem
)
const
;
...
...
svtools/source/control/tabbar.cxx
Dosyayı görüntüle @
fb8f83c1
...
...
@@ -36,7 +36,9 @@
#include <limits>
#include <utility>
namespace
{
namespace
{
#define TABBAR_DRAG_SCROLLOFF 5
#define TABBAR_MINSIZE 5
...
...
@@ -44,6 +46,181 @@ const sal_uInt16 ADDNEWPAGE_AREAWIDTH = 10;
const
sal_uInt16
INSERT_TAB_WIDTH
=
32
;
const
sal_uInt16
BUTTON_MARGIN
=
6
;
class
TabDrawer
{
private
:
TabBar
&
mrParent
;
vcl
::
RenderContext
&
mrRenderContext
;
const
StyleSettings
&
mrStyleSettings
;
Rectangle
maRect
;
Color
maSelectedColor
;
Color
maCustomColor
;
Color
maUnselectedColor
;
bool
mbSelected
:
1
;
bool
mbCustomColored
:
1
;
bool
mbSpecialTab
:
1
;
bool
mbEnabled
:
1
;
public
:
explicit
TabDrawer
(
TabBar
&
rParent
,
vcl
::
RenderContext
&
rRenderContext
)
:
mrParent
(
rParent
)
,
mrRenderContext
(
rRenderContext
)
,
mrStyleSettings
(
rRenderContext
.
GetSettings
().
GetStyleSettings
())
,
mbSelected
(
false
)
,
mbCustomColored
(
false
)
,
mbSpecialTab
(
false
)
,
mbEnabled
(
false
)
{
}
void
drawOutputAreaBorder
()
{
WinBits
nWinStyle
=
mrParent
.
GetStyle
();
// draw extra line if above and below border
if
((
nWinStyle
&
WB_BORDER
)
||
(
nWinStyle
&
WB_TOPBORDER
))
{
Size
aOutputSize
=
mrRenderContext
.
GetOutputSizePixel
();
Rectangle
aOutRect
=
mrParent
.
GetPageArea
();
// also draw border in 3D for 3D-tabs
if
(
nWinStyle
&
WB_3DTAB
)
{
mrRenderContext
.
SetLineColor
(
mrStyleSettings
.
GetShadowColor
());
mrRenderContext
.
DrawLine
(
Point
(
aOutRect
.
Left
(),
0
),
Point
(
aOutputSize
.
Width
(),
0
));
}
// draw border (line above and line below)
mrRenderContext
.
SetLineColor
(
mrStyleSettings
.
GetDarkShadowColor
());
mrRenderContext
.
DrawLine
(
aOutRect
.
TopLeft
(),
Point
(
aOutputSize
.
Width
()
-
1
,
aOutRect
.
Top
()));
}
}
void
drawOuterFrame
()
{
mrRenderContext
.
SetLineColor
(
mrStyleSettings
.
GetDarkShadowColor
());
// set correct FillInBrush depending on status
if
(
mbSelected
)
{
// Currently selected Tab
mrRenderContext
.
SetFillColor
(
maSelectedColor
);
}
else
if
(
mbCustomColored
)
{
mrRenderContext
.
SetFillColor
(
maCustomColor
);
}
else
{
mrRenderContext
.
SetFillColor
(
maUnselectedColor
);
}
mrRenderContext
.
DrawRect
(
maRect
);
}
void
drawText
(
const
OUString
&
aText
)
{
Rectangle
aRect
=
maRect
;
long
nTextWidth
=
mrRenderContext
.
GetTextWidth
(
aText
);
long
nTextHeight
=
mrRenderContext
.
GetTextHeight
();
Point
aPos
=
aRect
.
TopLeft
();
aPos
.
X
()
+=
(
aRect
.
getWidth
()
-
nTextWidth
)
/
2
;
aPos
.
Y
()
+=
(
aRect
.
getHeight
()
-
nTextHeight
)
/
2
;
if
(
mbEnabled
)
mrRenderContext
.
DrawText
(
aPos
,
aText
);
else
mrRenderContext
.
DrawCtrlText
(
aPos
,
aText
,
0
,
aText
.
getLength
(),
(
TEXT_DRAW_DISABLE
|
TEXT_DRAW_MNEMONIC
));
}
void
drawOverTopBorder
()
{
Point
aTopLeft
=
maRect
.
TopLeft
()
+
Point
(
1
,
0
);
Point
aTopRight
=
maRect
.
TopRight
()
+
Point
(
-
1
,
0
);
Rectangle
aDelRect
(
aTopLeft
,
aTopRight
);
mrRenderContext
.
DrawRect
(
aDelRect
);
}
void
drawColorLine
()
{
mrRenderContext
.
SetFillColor
(
maCustomColor
);
mrRenderContext
.
SetLineColor
(
maCustomColor
);
Rectangle
aLineRect
(
maRect
.
BottomLeft
(),
maRect
.
BottomRight
());
aLineRect
.
Top
()
-=
3
;
mrRenderContext
.
DrawRect
(
aLineRect
);
}
void
drawTab
()
{
drawOuterFrame
();
if
(
mbCustomColored
&&
mbSelected
)
{
drawColorLine
();
}
}
void
drawPlusImage
()
{
DecorationView
aDecorationView
(
&
mrRenderContext
);
sal_Int32
aScaleFactor
=
mrRenderContext
.
GetDPIScaleFactor
();
Size
aSize
(
12
*
aScaleFactor
,
12
*
aScaleFactor
);
Point
aPosition
=
maRect
.
TopLeft
();
long
nXOffSet
=
(
maRect
.
GetWidth
()
-
aSize
.
Width
())
/
2
;
long
nYOffset
=
(
maRect
.
GetHeight
()
-
aSize
.
Height
())
/
2
;
aPosition
+=
Point
(
nXOffSet
,
nYOffset
);
aDecorationView
.
DrawSymbol
(
Rectangle
(
aPosition
,
aSize
),
SymbolType
::
PLUS
,
mrStyleSettings
.
GetDarkShadowColor
());
}
void
setRect
(
const
Rectangle
&
rRect
)
{
maRect
=
rRect
;
}
void
setSelected
(
bool
bSelected
)
{
mbSelected
=
bSelected
;
}
void
setCustomColored
(
bool
bCustomColored
)
{
mbCustomColored
=
bCustomColored
;
}
void
setSpecialTab
(
bool
bSpecialTab
)
{
mbSpecialTab
=
bSpecialTab
;
}
void
setEnabled
(
bool
bEnabled
)
{
mbEnabled
=
bEnabled
;
}
void
setSelectedFillColor
(
const
Color
&
rColor
)
{
maSelectedColor
=
rColor
;
}
void
setUnselectedFillColor
(
const
Color
&
rColor
)
{
maUnselectedColor
=
rColor
;
}
void
setCustomColor
(
const
Color
&
rColor
)
{
maCustomColor
=
rColor
;
}
};
}
// anonymous namespace
struct
ImplTabBarItem
...
...
@@ -221,10 +398,10 @@ void ImplTabSizer::Tracking( const TrackingEvent& rTEvt )
ImplTrack
(
OutputToScreenPixel
(
rTEvt
.
GetMouseEvent
().
GetPosPixel
()
)
);
}
void
ImplTabSizer
::
Paint
(
vcl
::
RenderContext
&
/*rRenderContext*/
,
const
Rectangle
&
)
void
ImplTabSizer
::
Paint
(
vcl
::
RenderContext
&
rRenderContext
,
const
Rectangle
&
)
{
DecorationView
aDecoView
(
this
);
Rectangle
aOutputRect
(
Point
(
0
,
0
),
GetOutputSizePixel
());
DecorationView
aDecoView
(
&
rRenderContext
);
Rectangle
aOutputRect
(
Point
(
0
,
0
),
rRenderContext
.
GetOutputSizePixel
());
aDecoView
.
DrawHandle
(
aOutputRect
,
true
);
}
...
...
@@ -494,31 +671,30 @@ void TabBar::ImplInitSettings( bool bFont, bool bBackground )
}
}
void
TabBar
::
ImplGetColors
(
Color
&
rFaceColor
,
Color
&
rFaceTextColor
,
Color
&
rSelectColor
,
Color
&
rSelectTextColor
)
void
TabBar
::
ImplGetColors
(
const
StyleSettings
&
rStyleSettings
,
Color
&
rFaceColor
,
Color
&
rFaceTextColor
,
Color
&
rSelectColor
,
Color
&
rSelectTextColor
)
{
const
StyleSettings
&
rStyleSettings
=
GetSettings
().
GetStyleSettings
();
if
(
IsControlBackground
()
)
if
(
IsControlBackground
())
rFaceColor
=
GetControlBackground
();
else
rFaceColor
=
rStyleSettings
.
GetInactiveTabColor
();
if
(
IsControlForeground
()
)
if
(
IsControlForeground
()
)
rFaceTextColor
=
GetControlForeground
();
else
rFaceTextColor
=
rStyleSettings
.
GetButtonTextColor
();
if
(
mbSelColor
)
if
(
mbSelColor
)
rSelectColor
=
maSelColor
;
else
rSelectColor
=
rStyleSettings
.
GetActiveTabColor
();
if
(
mbSelTextColor
)
if
(
mbSelTextColor
)
rSelectTextColor
=
maSelTextColor
;
else
rSelectTextColor
=
rStyleSettings
.
GetWindowTextColor
();
// For 3D-tabs the selection- and face-colours are swapped,
// as the selected tabs should appear in 3D
if
(
mnWinStyle
&
WB_3DTAB
)
if
(
mnWinStyle
&
WB_3DTAB
)
{
using
std
::
swap
;
swap
(
rFaceColor
,
rSelectColor
);
...
...
@@ -1017,233 +1193,33 @@ void TabBar::MouseButtonUp( const MouseEvent& rMEvt )
Window
::
MouseButtonUp
(
rMEvt
);
}
namespace
{
class
TabBarPaintGuard
void
TabBar
::
Paint
(
vcl
::
RenderContext
&
rRenderContext
,
const
Rectangle
&
rect
)
{
public
:
explicit
TabBarPaintGuard
(
TabBar
&
rParent
)
:
mrParent
(
rParent
),
maFont
(
rParent
.
GetFont
())
{
// #i36013# exclude push buttons from painting area
mrParent
.
SetClipRegion
(
vcl
::
Region
(
mrParent
.
GetPageArea
())
);
}
~
TabBarPaintGuard
()
if
(
rRenderContext
.
IsNativeControlSupported
(
CTRL_WINDOW_BACKGROUND
,
PART_ENTIRE_CONTROL
))
{
// Restore original font.
mrParent
.
SetFont
(
maFont
);
// remove clip region
mrParent
.
SetClipRegion
();
}
private
:
TabBar
&
mrParent
;
vcl
::
Font
maFont
;
};
class
TabDrawer
{
public
:
explicit
TabDrawer
(
TabBar
&
rParent
)
:
mrParent
(
rParent
),
mpStyleSettings
(
&
mrParent
.
GetSettings
().
GetStyleSettings
()),
mbSelected
(
false
),
mbCustomColored
(
false
),
mbSpecialTab
(
false
),
mbEnabled
(
false
)
{
}
void
drawOutputAreaBorder
()
{
WinBits
nWinStyle
=
mrParent
.
GetStyle
();
// draw extra line if above and below border
if
((
nWinStyle
&
WB_BORDER
)
||
(
nWinStyle
&
WB_TOPBORDER
))
{
Size
aOutputSize
=
mrParent
.
GetOutputSizePixel
();
Rectangle
aOutRect
=
mrParent
.
GetPageArea
();
// also draw border in 3D for 3D-tabs
if
(
nWinStyle
&
WB_3DTAB
)
{
mrParent
.
SetLineColor
(
mpStyleSettings
->
GetShadowColor
());
mrParent
.
DrawLine
(
Point
(
aOutRect
.
Left
(),
0
),
Point
(
aOutputSize
.
Width
(),
0
));
}
// draw border (line above and line below)
mrParent
.
SetLineColor
(
mpStyleSettings
->
GetDarkShadowColor
());
mrParent
.
DrawLine
(
aOutRect
.
TopLeft
(),
Point
(
aOutputSize
.
Width
()
-
1
,
aOutRect
.
Top
()));
}
}
void
drawOuterFrame
()
{
mrParent
.
SetLineColor
(
mpStyleSettings
->
GetDarkShadowColor
());
// set correct FillInBrush depending on status
if
(
mbSelected
)
{
// Currently selected Tab
mrParent
.
SetFillColor
(
maSelectedColor
);
}
else
if
(
mbCustomColored
)
{
mrParent
.
SetFillColor
(
maCustomColor
);
}
else
{
mrParent
.
SetFillColor
(
maUnselectedColor
);
}
mrParent
.
DrawRect
(
maRect
);
}
void
drawText
(
const
OUString
&
aText
)
{
Rectangle
aRect
=
maRect
;
long
nTextWidth
=
mrParent
.
GetTextWidth
(
aText
);
long
nTextHeight
=
mrParent
.
GetTextHeight
();
Point
aPos
=
aRect
.
TopLeft
();
aPos
.
X
()
+=
(
aRect
.
getWidth
()
-
nTextWidth
)
/
2
;
aPos
.
Y
()
+=
(
aRect
.
getHeight
()
-
nTextHeight
)
/
2
;
if
(
mbEnabled
)
mrParent
.
DrawText
(
aPos
,
aText
);
else
mrParent
.
DrawCtrlText
(
aPos
,
aText
,
0
,
aText
.
getLength
(),
(
TEXT_DRAW_DISABLE
|
TEXT_DRAW_MNEMONIC
));
}
void
drawOverTopBorder
()
{
Point
aTopLeft
=
maRect
.
TopLeft
()
+
Point
(
1
,
0
);
Point
aTopRight
=
maRect
.
TopRight
()
+
Point
(
-
1
,
0
);
Rectangle
aDelRect
(
aTopLeft
,
aTopRight
);
mrParent
.
DrawRect
(
aDelRect
);
}
void
drawColorLine
()
{
mrParent
.
SetFillColor
(
maCustomColor
);
mrParent
.
SetLineColor
(
maCustomColor
);
Rectangle
aLineRect
(
maRect
.
BottomLeft
(),
maRect
.
BottomRight
());
aLineRect
.
Top
()
-=
3
;
mrParent
.
DrawRect
(
aLineRect
);
}
void
drawTab
()
{
drawOuterFrame
();
if
(
mbCustomColored
&&
mbSelected
)
{
drawColorLine
();
}
}
void
drawPlusImage
()
{
const
StyleSettings
&
rStyleSettings
=
mrParent
.
GetSettings
().
GetStyleSettings
();
DecorationView
aDecorationView
(
&
mrParent
);
sal_Int32
aScaleFactor
=
mrParent
.
GetDPIScaleFactor
();
Size
aSize
(
12
*
aScaleFactor
,
12
*
aScaleFactor
);
Point
aPosition
=
maRect
.
TopLeft
();
long
nXOffSet
=
(
maRect
.
GetWidth
()
-
aSize
.
Width
())
/
2
;
long
nYOffset
=
(
maRect
.
GetHeight
()
-
aSize
.
Height
())
/
2
;
aPosition
+=
Point
(
nXOffSet
,
nYOffset
);
aDecorationView
.
DrawSymbol
(
Rectangle
(
aPosition
,
aSize
),
SymbolType
::
PLUS
,
rStyleSettings
.
GetDarkShadowColor
());
}
void
setRect
(
const
Rectangle
&
rRect
)
{
maRect
=
rRect
;
}
void
setSelected
(
bool
bSelected
)
{
mbSelected
=
bSelected
;
}
void
setCustomColored
(
bool
bCustomColored
)
{
mbCustomColored
=
bCustomColored
;
}
void
setSpecialTab
(
bool
bSpecialTab
)
{
mbSpecialTab
=
bSpecialTab
;
}
void
setEnabled
(
bool
bEnabled
)
{
mbEnabled
=
bEnabled
;
}
void
setSelectedFillColor
(
const
Color
&
rColor
)
{
maSelectedColor
=
rColor
;
}
void
setUnselectedFillColor
(
const
Color
&
rColor
)
{
maUnselectedColor
=
rColor
;
}
void
setCustomColor
(
const
Color
&
rColor
)
{
maCustomColor
=
rColor
;
}
private
:
TabBar
&
mrParent
;
const
StyleSettings
*
mpStyleSettings
;
Rectangle
maRect
;
Color
maSelectedColor
;
Color
maCustomColor
;
Color
maUnselectedColor
;
bool
mbSelected
:
1
;
bool
mbCustomColored
:
1
;
bool
mbSpecialTab
:
1
;
bool
mbEnabled
:
1
;
};
}
// anonymous namespace
void
TabBar
::
Paint
(
vcl
::
RenderContext
&
/*rRenderContext*/
,
const
Rectangle
&
rect
)
{
if
(
IsNativeControlSupported
(
CTRL_WINDOW_BACKGROUND
,
PART_ENTIRE_CONTROL
))
DrawNativeControl
(
CTRL_WINDOW_BACKGROUND
,
PART_ENTIRE_CONTROL
,
rect
,
rRenderContext
.
DrawNativeControl
(
CTRL_WINDOW_BACKGROUND
,
PART_ENTIRE_CONTROL
,
rect
,
ControlState
::
ENABLED
,
ImplControlValue
(
0
),
OUString
());
}
// calculate items and emit
sal_uInt16
nItemCount
=
mpImpl
->
getItemSize
();
if
(
!
nItemCount
)
return
;
ImplPrePaint
();
ImplPrePaint
(
rRenderContext
);
Color
aFaceColor
,
aSelectColor
,
aFaceTextColor
,
aSelectTextColor
;
ImplGetColors
(
aFaceColor
,
aFaceTextColor
,
aSelectColor
,
aSelectTextColor
);
const
StyleSettings
&
rStyleSettings
=
rRenderContext
.
GetSettings
().
GetStyleSettings
();
ImplGetColors
(
rStyleSettings
,
aFaceColor
,
aFaceTextColor
,
aSelectColor
,
aSelectTextColor
);
rRenderContext
.
Push
(
PushFlags
::
FONT
|
PushFlags
::
CLIPREGION
);
rRenderContext
.
SetClipRegion
(
vcl
::
Region
(
GetPageArea
()));
// select font
vcl
::
Font
aFont
=
GetFont
();
vcl
::
Font
aFont
=
rRenderContext
.
GetFont
();
vcl
::
Font
aLightFont
=
aFont
;
aLightFont
.
SetWeight
(
WEIGHT_NORMAL
);
aLightFont
.
SetWeight
(
WEIGHT_NORMAL
);
TabBarPaintGuard
aGuard
(
*
this
);
TabDrawer
aDrawer
(
*
this
);
TabDrawer
aDrawer
(
*
this
,
rRenderContext
);
aDrawer
.
setSelectedFillColor
(
aSelectColor
);
aDrawer
.
setUnselectedFillColor
(
aFaceColor
);
...
...
@@ -1262,23 +1238,22 @@ void TabBar::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rec
aDrawer
.
drawPlusImage
();
}
const
StyleSettings
&
rStyleSettings
=
GetSettings
().
GetStyleSettings
();
ImplTabBarItem
*
pCurItem
=
NULL
;
while
(
pItem
)
while
(
pItem
)
{
// emit CurrentItem last, as it covers all others
if
(
!
pCurItem
&&
(
pItem
->
mnId
==
mnCurPageId
)
)
if
(
!
pCurItem
&&
(
pItem
->
mnId
==
mnCurPageId
)
)
{
pCurItem
=
pItem
;
pItem
=
prev
();
if
(
!
pItem
)
if
(
!
pItem
)
pItem
=
pCurItem
;
continue
;
}
bool
bCurrent
=
pItem
==
pCurItem
;
if
(
!
pItem
->
maRect
.
IsEmpty
()
)
if
(
!
pItem
->
maRect
.
IsEmpty
()
)
{
Rectangle
aRect
=
pItem
->
maRect
;
bool
bSelected
=
pItem
->
IsSelected
(
pCurItem
);
...
...
@@ -1286,8 +1261,7 @@ void TabBar::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rec
bool
bCustomBgColor
=
!
pItem
->
IsDefaultTabBgColor
()
&&
!
rStyleSettings
.
GetHighContrastMode
();
bool
bSpecialTab
=
(
pItem
->
mnBits
&
TPB_SPECIAL
);
bool
bEnabled
=
pItem
->
mbEnable
;
OUString
aText
=
pItem
->
mbShort
?
GetEllipsisString
(
pItem
->
maText
,
mnCurMaxWidth
,
TEXT_DRAW_ENDELLIPSIS
)
:
pItem
->
maText
;
OUString
aText
=
pItem
->
mbShort
?
rRenderContext
.
GetEllipsisString
(
pItem
->
maText
,
mnCurMaxWidth
,
TEXT_DRAW_ENDELLIPSIS
)
:
pItem
->
maText
;
aDrawer
.
setRect
(
aRect
);
aDrawer
.
setSelected
(
bSelected
);
...
...
@@ -1298,30 +1272,30 @@ void TabBar::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rec
aDrawer
.
drawTab
();
// actual page is drawn using a bold font
if
(
bCurrent
)
SetFont
(
aFont
);
if
(
bCurrent
)
rRenderContext
.
SetFont
(
aFont
);
else
SetFont
(
aLightFont
);
rRenderContext
.
SetFont
(
aLightFont
);
// Set the correct FillInBrush depending on status
if
(
bSelected
)
SetTextColor
(
aSelectTextColor
);
else
if
(
bCustomBgColor
)
SetTextColor
(
pItem
->
maTabTextColor
);
if
(
bSelected
)
rRenderContext
.
SetTextColor
(
aSelectTextColor
);
else
if
(
bCustomBgColor
)
rRenderContext
.
SetTextColor
(
pItem
->
maTabTextColor
);
else
SetTextColor
(
aFaceTextColor
);
rRenderContext
.
SetTextColor
(
aFaceTextColor
);
// This tab is "special", and a special tab needs a blue text.
if
(
bSpecialTab
)
SetTextColor
(
Color
(
COL_LIGHTBLUE
));
rRenderContext
.
SetTextColor
(
Color
(
COL_LIGHTBLUE
));
aDrawer
.
drawText
(
aText
);
if
(
bCurrent
)
if
(
bCurrent
)
{
SetLineColor
();
SetFillColor
(
aSelectColor
);
rRenderContext
.
SetLineColor
();
rRenderContext
.
SetFillColor
(
aSelectColor
);
aDrawer
.
drawOverTopBorder
();
return
;
}
...
...
@@ -1330,13 +1304,13 @@ void TabBar::Paint( vcl::RenderContext& /*rRenderContext*/, const Rectangle& rec
}
else
{
if
(
bCurrent
)
if
(
bCurrent
)
return
;
pItem
=
NULL
;
}
if
(
!
pItem
)
if
(
!
pItem
)
pItem
=
pCurItem
;
}
}
...
...
@@ -1624,7 +1598,7 @@ bool TabBar::ImplDeactivatePage()
return
nRet
;
}
void
TabBar
::
ImplPrePaint
()
void
TabBar
::
ImplPrePaint
(
vcl
::
RenderContext
&
/*rRenderContext*/
)
{
sal_uInt16
nItemCount
=
mpImpl
->
getItemSize
();
if
(
!
nItemCount
)
...
...
@@ -1635,20 +1609,20 @@ void TabBar::ImplPrePaint()
ImplFormat
();
// assure the actual tabpage becomes visible at first format
if
(
mbFirstFormat
)
if
(
mbFirstFormat
)
{
mbFirstFormat
=
false
;
if
(
mnCurPageId
&&
(
mnFirstPos
==
0
)
&&
!
mbDropPos
)
if
(
mnCurPageId
&&
(
mnFirstPos
==
0
)
&&
!
mbDropPos
)
{
ImplTabBarItem
*
pItem
=
mpImpl
->
mpItemList
[
GetPagePos
(
mnCurPageId
)];
if
(
pItem
->
maRect
.
IsEmpty
()
)
if
(
pItem
->
maRect
.
IsEmpty
()
)
{
// set mbDropPos (or misuse) to prevent Invalidate()
mbDropPos
=
true
;
SetFirstPageId
(
mnCurPageId
);
SetFirstPageId
(
mnCurPageId
);
mbDropPos
=
false
;
if
(
mnFirstPos
!=
0
)
if
(
mnFirstPos
!=
0
)
ImplFormat
();
}
}
...
...
@@ -2164,16 +2138,16 @@ bool TabBar::IsPageSelected( sal_uInt16 nPageId ) const
return
false
;
}
bool
TabBar
::
StartEditMode
(
sal_uInt16
nPageId
)
bool
TabBar
::
StartEditMode
(
sal_uInt16
nPageId
)
{
sal_uInt16
nPos
=
GetPagePos
(
nPageId
);
if
(
mpImpl
->
mpEdit
||
(
nPos
==
PAGE_NOT_FOUND
)
||
(
mnLastOffX
<
8
))
return
false
;
mnEditId
=
nPageId
;
if
(
StartRenaming
()
)
if
(
StartRenaming
()
)
{
ImplShowPage
(
nPos
);
ImplShowPage
(
nPos
);
ImplFormat
();
Update
();
...
...
@@ -2181,11 +2155,11 @@ bool TabBar::StartEditMode( sal_uInt16 nPageId )
Rectangle
aRect
=
GetPageRect
(
mnEditId
);
long
nX
=
aRect
.
Left
();
long
nWidth
=
aRect
.
GetWidth
();
if
(
mnEditId
!=
GetCurPageId
()
)
if
(
mnEditId
!=
GetCurPageId
()
)
nX
+=
1
;
if
(
nX
+
nWidth
>
mnLastOffX
)
if
(
nX
+
nWidth
>
mnLastOffX
)
nWidth
=
mnLastOffX
-
nX
;
if
(
nWidth
<
3
)
if
(
nWidth
<
3
)
{
nX
=
aRect
.
Left
();
nWidth
=
aRect
.
GetWidth
();
...
...
@@ -2193,16 +2167,21 @@ bool TabBar::StartEditMode( sal_uInt16 nPageId )
mpImpl
->
mpEdit
->
SetText
(
GetPageText
(
mnEditId
));
mpImpl
->
mpEdit
->
setPosSizePixel
(
nX
,
aRect
.
Top
()
+
mnOffY
+
1
,
nWidth
,
aRect
.
GetHeight
()
-
3
);
vcl
::
Font
aFont
=
GetPointFont
();
Color
aForegroundColor
;
Color
aBackgroundColor
;
Color
aFaceColor
;
Color
aSelectColor
;
Color
aFaceTextColor
;
Color
aSelectTextColor
;
ImplGetColors
(
aFaceColor
,
aFaceTextColor
,
aSelectColor
,
aSelectTextColor
);
if
(
mnEditId
!=
GetCurPageId
()
)
aFont
.
SetWeight
(
WEIGHT_LIGHT
);
if
(
IsPageSelected
(
mnEditId
)
||
(
mnEditId
==
GetCurPageId
())
)
ImplGetColors
(
Application
::
GetSettings
().
GetStyleSettings
(),
aFaceColor
,
aFaceTextColor
,
aSelectColor
,
aSelectTextColor
);
if
(
mnEditId
!=
GetCurPageId
())
{
aFont
.
SetWeight
(
WEIGHT_LIGHT
);
}
if
(
IsPageSelected
(
mnEditId
)
||
mnEditId
==
GetCurPageId
())
{
aForegroundColor
=
aSelectTextColor
;
aBackgroundColor
=
aSelectColor
;
...
...
@@ -2212,8 +2191,10 @@ bool TabBar::StartEditMode( sal_uInt16 nPageId )
aForegroundColor
=
aFaceTextColor
;
aBackgroundColor
=
aFaceColor
;
}
if
(
GetPageBits
(
mnEditId
)
&
TPB_SPECIAL
)
aForegroundColor
=
Color
(
COL_LIGHTBLUE
);
if
(
GetPageBits
(
mnEditId
)
&
TPB_SPECIAL
)
{
aForegroundColor
=
Color
(
COL_LIGHTBLUE
);
}
mpImpl
->
mpEdit
->
SetControlFont
(
aFont
);
mpImpl
->
mpEdit
->
SetControlForeground
(
aForegroundColor
);
mpImpl
->
mpEdit
->
SetControlBackground
(
aBackgroundColor
);
...
...
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