summaryrefslogtreecommitdiff
path: root/svtools
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-06-18 21:30:10 +0100
committerCaolán McNamara <caolanm@redhat.com>2018-06-20 16:34:13 +0200
commitd148e5c5db3f3ea32abd6f7bed30665a3931e937 (patch)
tree7d1f69735f8846bf2f966fd1f878ba9aee76dd7a /svtools
parent361434e4e8fa58e02e694ec8cfa8187eecdf8c7f (diff)
weld SvxColorTabPage
Change-Id: I5dc6f949edcb34aa110dfa9415e2ac886d0dfa4c Reviewed-on: https://gerrit.libreoffice.org/56155 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'svtools')
-rw-r--r--svtools/source/control/valueset.cxx118
1 files changed, 110 insertions, 8 deletions
diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx
index 7ecb3b4159fe..23f8c82eb9c7 100644
--- a/svtools/source/control/valueset.cxx
+++ b/svtools/source/control/valueset.cxx
@@ -2275,8 +2275,9 @@ void ValueSet::SetEdgeBlending(bool bNew)
}
}
-SvtValueSet::SvtValueSet()
+SvtValueSet::SvtValueSet(weld::ScrolledWindow* pScrolledWindow)
: maVirDev( VclPtr<VirtualDevice>::Create())
+ , mxScrolledWindow(pScrolledWindow)
, maColor(COL_TRANSPARENT)
, mnStyle(0)
, mbFormat(true)
@@ -2308,6 +2309,12 @@ SvtValueSet::SvtValueSet()
mbFullMode = true;
mbEdgeBlending = false;
mbHasVisibleItems = false;
+
+ if (mxScrolledWindow)
+ {
+ mxScrolledWindow->set_user_managed_scrolling();
+ mxScrolledWindow->connect_vadjustment_changed(LINK(this, SvtValueSet, ImplScrollHdl));
+ }
}
void SvtValueSet::SetDrawingArea(weld::DrawingArea* pDrawingArea)
@@ -2360,10 +2367,6 @@ void SvtValueSet::Select()
maSelectHdl.Call( this );
}
-void SvtValueSet::UserDraw( const UserDrawEvent& )
-{
-}
-
size_t SvtValueSet::ImplGetItem( const Point& rPos ) const
{
if (!mbHasVisibleItems)
@@ -2442,6 +2445,17 @@ bool SvtValueSet::ImplHasAccessibleListeners()
return( pAcc && pAcc->HasAccessibleListeners() );
}
+IMPL_LINK(SvtValueSet, ImplScrollHdl, weld::ScrolledWindow&, rScrollWin, void)
+{
+ auto nNewFirstLine = rScrollWin.vadjustment_get_value();
+ if ( nNewFirstLine != mnFirstLine )
+ {
+ mnFirstLine = nNewFirstLine;
+ mbFormat = true;
+ Invalidate();
+ }
+}
+
void SvtValueSet::Paint(vcl::RenderContext& rRenderContext, const tools::Rectangle&)
{
if (GetStyle() & WB_FLATVALUESET)
@@ -2663,6 +2677,50 @@ void SvtValueSet::MouseButtonDown( const MouseEvent& rMouseEvent )
CustomWidgetController::MouseButtonDown( rMouseEvent );
}
+void SvtValueSet::RemoveItem( sal_uInt16 nItemId )
+{
+ size_t nPos = GetItemPos( nItemId );
+
+ if ( nPos == VALUESET_ITEM_NOTFOUND )
+ return;
+
+ if ( nPos < mItemList.size() ) {
+ SvtValueItemList::iterator it = mItemList.begin();
+ ::std::advance( it, nPos );
+ delete *it;
+ mItemList.erase( it );
+ }
+
+ // reset variables
+ if (mnSelItemId == nItemId)
+ {
+ mnCurCol = 0;
+ mnSelItemId = 0;
+ mbNoSelection = true;
+ }
+
+ queue_resize();
+
+ mbFormat = true;
+ if ( IsReallyVisible() && IsUpdateMode() )
+ Invalidate();
+}
+
+void SvtValueSet::Clear()
+{
+ ImplDeleteItems();
+
+ // reset variables
+ mnFirstLine = 0;
+ mnCurCol = 0;
+ mnSelItemId = 0;
+ mbNoSelection = true;
+
+ mbFormat = true;
+ if (IsReallyVisible() && IsUpdateMode())
+ Invalidate();
+}
+
size_t SvtValueSet::GetItemCount() const
{
return mItemList.size();
@@ -2863,7 +2921,6 @@ void SvtValueSet::SelectItem( sal_uInt16 nItemId )
Any aNewAny;
ImplFireAccessibleEvent(AccessibleEventId::SELECTION_CHANGED, aOldAny, aNewAny);
}
- maHighlightHdl.Call(this);
}
void SvtValueSet::SetNoSelection()
@@ -2874,6 +2931,16 @@ void SvtValueSet::SetNoSelection()
Invalidate();
}
+void SvtValueSet::SetStyle(WinBits nStyle)
+{
+ if (nStyle != mnStyle)
+ {
+ mnStyle = nStyle;
+ mbFormat = false;
+ Invalidate();
+ }
+}
+
void SvtValueSet::Format(vcl::RenderContext const & rRenderContext)
{
Size aWinSize(GetOutputSizePixel());
@@ -2884,6 +2951,13 @@ void SvtValueSet::Format(vcl::RenderContext const & rRenderContext)
long nNoneHeight;
long nNoneSpace;
+ if (mxScrolledWindow && !(nStyle & WB_VSCROLL) && mxScrolledWindow->get_vpolicy() != VclPolicyType::NEVER)
+ {
+ mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER);
+ Size aPrefSize(GetDrawingArea()->get_preferred_size());
+ GetDrawingArea()->set_size_request(aPrefSize.Width() + GetScrollWidth(), aPrefSize.Height());
+ }
+
// calculate item offset
if (nStyle & WB_ITEMBORDER)
{
@@ -3028,6 +3102,13 @@ void SvtValueSet::Format(vcl::RenderContext const & rRenderContext)
{
mItemList[i]->mbVisible = false;
}
+
+ if (mxScrolledWindow && mxScrolledWindow->get_vpolicy() != VclPolicyType::NEVER)
+ {
+ mxScrolledWindow->set_vpolicy(VclPolicyType::NEVER);
+ Size aPrefSize(GetDrawingArea()->get_preferred_size());
+ GetDrawingArea()->set_size_request(aPrefSize.Width() + GetScrollWidth(), aPrefSize.Height());
+ }
}
else
{
@@ -3164,6 +3245,19 @@ void SvtValueSet::Format(vcl::RenderContext const & rRenderContext)
pItem->mbVisible = false;
}
}
+
+ // arrange ScrollBar, set values and show it
+ if (mxScrolledWindow && (nStyle & WB_VSCROLL) && mxScrolledWindow->get_vpolicy() != VclPolicyType::ALWAYS)
+ {
+ long nPageSize = mnVisLines;
+ if (nPageSize < 1)
+ nPageSize = 1;
+ mxScrolledWindow->vadjustment_configure(mnFirstLine, 0, mnLines, 1,
+ mnVisLines, nPageSize);
+ mxScrolledWindow->set_vpolicy(VclPolicyType::ALWAYS);
+ Size aPrefSize(GetDrawingArea()->get_preferred_size());
+ GetDrawingArea()->set_size_request(aPrefSize.Width() - GetScrollWidth(), aPrefSize.Height());
+ }
}
// waiting for the next since the formatting is finished
@@ -3376,8 +3470,6 @@ void SvtValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, SvtV
if (pItem->meType == VALUESETITEM_USERDRAW)
{
- UserDrawEvent aUDEvt(nullptr, maVirDev.get(), aRect, pItem->mnId);
- UserDraw(aUDEvt);
}
else
{
@@ -3597,6 +3689,9 @@ Size SvtValueSet::CalcWindowSizePixel( const Size& rItemSize, sal_uInt16 nDesire
aSize.AdjustHeight(nTxtHeight + n + mnSpacing );
}
+ // sum possible ScrollBar width
+ aSize.AdjustWidth(GetScrollWidth());
+
return aSize;
}
@@ -3632,6 +3727,13 @@ void SvtValueSet::ImplInsertItem( SvtValueSetItem *const pItem, const size_t nPo
Invalidate();
}
+int SvtValueSet::GetScrollWidth() const
+{
+ if (mxScrolledWindow)
+ return mxScrolledWindow->get_vscroll_width();
+ return 0;
+}
+
void SvtValueSet::SetEdgeBlending(bool bNew)
{
if(mbEdgeBlending != bNew)