33 #include <strings.hrc>
36 #define SPLITWIN_SPLITSIZEEX 4
37 #define SPLITWIN_SPLITSIZEAUTOHIDE 72
38 #define SPLITWIN_SPLITSIZEFADE 72
40 #define SPLIT_HORZ (sal_uInt16(0x0001))
41 #define SPLIT_VERT (sal_uInt16(0x0002))
42 #define SPLIT_WINDOW (sal_uInt16(0x0004))
43 #define SPLIT_NOSPLIT (sal_uInt16(0x8000))
64 std::unique_ptr<ImplSplitSet> mpSet;
91 ImplSplitItem::ImplSplitItem()
131 if (rItem.mnMinSize>=0 && nSize<rItem.mnMinSize)
132 return rItem.mnMinSize;
133 else if (rItem.mnMaxSize>0 && nSize>rItem.mnMaxSize)
134 return rItem.mnMaxSize;
146 case WindowAlign::Top:
152 case WindowAlign::Left:
158 case WindowAlign::Bottom:
181 case WindowAlign::Bottom:
183 case WindowAlign::Top:
185 case WindowAlign::Left:
205 case WindowAlign::Left:
212 case WindowAlign::Right:
214 case WindowAlign::Top:
221 case WindowAlign::Bottom:
233 if ( pSet->
mnId == nId )
236 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
238 for (
const auto& rItem : rItems )
240 if ( rItem.mnId == nId )
241 return rItem.mpSet.get();
244 for (
auto& rItem : rItems )
259 size_t nItems = pSet->
mvItems.size();
260 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
262 for (
size_t i = 0;
i < nItems;
i++ )
264 if ( rItems[
i].
mnId == nId )
271 for (
auto& rItem : rItems )
286 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
288 for (
auto& rItem : rItems )
290 if ( rItem.mpWindow == pWindow )
307 bool bRows,
bool bDown =
true )
309 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
311 for (
auto& rItem : rItems )
313 if ( rItem.mnWidth && rItem.mnHeight )
315 Point aPoint( rItem.mnLeft, rItem.mnTop );
316 Size aSize( rItem.mnWidth, rItem.mnHeight );
335 if ( rItem.mpSet && !rItem.mpSet->mvItems.empty() )
352 bool bRows,
bool bDown =
true )
358 sal_uInt16 nCalcItems;
359 size_t nItems = pSet->
mvItems.size();
360 sal_uInt16 nAbsItems;
364 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
369 nCalcSize = nSetHeight;
371 nCalcSize = nSetWidth;
381 for (
const auto& rItem : rItems )
384 nRelCount += rItem.mnSize;
386 nPercent += rItem.mnSize;
388 nAbsSize += rItem.mnSize;
391 nPercent *= nPercentFactor;
395 while ( (nRelCount > nRelPercentBase) && (nPercentFactor < 100000) )
397 nRelPercentBase *= 10;
398 nPercentFactor *= 10;
400 if ( nPercent < nRelPercentBase )
402 nRelPercent = (nRelPercentBase-nPercent)/nRelCount;
403 nPercent += nRelPercent*nRelCount;
411 for (
auto& rItem : rItems )
415 if ( nSizeDelta <= 0 )
418 rItem.mnPixSize = (nSizeDelta*rItem.mnSize*nRelPercent)/nPercent;
422 if ( nSizeDelta <= 0 )
425 rItem.mnPixSize = (nSizeDelta*rItem.mnSize*nPercentFactor)/nPercent;
428 rItem.mnPixSize = rItem.mnSize;
429 nCurSize += rItem.mnPixSize;
436 nSizeDelta = nCalcSize-nCurSize;
443 for (
const auto& rItem : rItems )
448 nSizeWinSize += rItem.mnPixSize;
456 for (
auto& rItem : rItems )
460 rItem.mnPixSize += (nSizeDelta*rItem.mnPixSize)/nSizeWinSize;
461 nNewSizeWinSize += rItem.mnPixSize;
465 nSizeDelta -= nNewSizeWinSize-nSizeWinSize;
471 while ( nSizeDelta && (nItems != nMins) )
475 while ( !nCalcItems )
477 for (
auto& rItem : rItems )
479 rItem.mbSubSize =
false;
482 rItem.mbSubSize =
true;
485 if ( (nSizeDelta > 0) || rItem.mnPixSize )
488 rItem.mbSubSize =
true;
492 rItem.mbSubSize =
true;
497 if ( rItem.mbSubSize )
506 tools::Long nCurSizeDelta = nSizeDelta / nCalcItems;
508 for (
auto& rItem : rItems )
510 if ( rItem.mbSubSize )
525 if ( (*pSize+nCurSizeDelta+nTempErr) <= 0 )
537 *pSize += nCurSizeDelta;
538 nSizeDelta -= nCurSizeDelta;
539 if ( nTempErr && (*pSize || (nTempErr > 0)) )
542 nSizeDelta -= nTempErr;
543 nErrorSum -= nTempErr;
557 nMaxPos = nSetTop-nSetHeight;
559 nMaxPos = nSetTop+nSetHeight;
565 nMaxPos = nSetLeft-nSetWidth;
567 nMaxPos = nSetLeft+nSetWidth;
571 for (
size_t i = 0;
i < nItems;
i++ )
573 rItems[
i].mnOldSplitPos = rItems[
i].mnSplitPos;
574 rItems[
i].mnOldSplitSize = rItems[
i].mnSplitSize;
575 rItems[
i].mnOldWidth = rItems[
i].mnWidth;
576 rItems[
i].mnOldHeight = rItems[
i].mnHeight;
581 if ( nPos+rItems[
i].mnPixSize > nMaxPos )
586 nPos -= rItems[
i].mnPixSize;
587 if ( nPos < nMaxPos )
593 rItems[
i].mnWidth = 0;
594 rItems[
i].mnHeight = 0;
595 rItems[
i].mnSplitSize = 0;
601 rItems[
i].mnLeft = nSetLeft;
602 rItems[
i].mnTop = nPos;
603 rItems[
i].mnWidth = nSetWidth;
604 rItems[
i].mnHeight = rItems[
i].mnPixSize;
608 rItems[
i].mnLeft = nPos;
609 rItems[
i].mnTop = nSetTop;
610 rItems[
i].mnWidth = rItems[
i].mnPixSize;
611 rItems[
i].mnHeight = nSetHeight;
615 rItems[
i].mnSplitSize = 0;
621 rItems[
i].mnSplitPos = nPos+rItems[
i].mnPixSize;
622 if ( rItems[
i].mnSplitPos+rItems[
i].mnSplitSize > nMaxPos )
623 rItems[
i].mnSplitSize = nMaxPos-rItems[
i].mnSplitPos;
628 if ( rItems[
i].mnSplitPos < nMaxPos )
629 rItems[
i].mnSplitSize = rItems[
i].mnSplitPos+pSet->
mnSplitSize-nMaxPos;
641 for (
auto& rItem : rItems )
643 if ( rItem.mpSet && rItem.mnWidth && rItem.mnHeight )
646 rItem.mnLeft, rItem.mnTop,
647 rItem.mnWidth, rItem.mnHeight,
653 for (
auto& rItem : rItems )
655 rItem.mbFixed =
false;
657 rItem.mbFixed =
true;
664 for (
auto const & j: rItem.mpSet->mvItems )
668 rItem.mbFixed =
true;
680 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
684 for (
const auto& rItem : rItems )
686 if ( rItem.mnSplitSize )
689 if ( (rItem.mnOldSplitPos != rItem.mnSplitPos) ||
690 (rItem.mnOldSplitSize != rItem.mnSplitSize) ||
691 (rItem.mnOldWidth != rItem.mnWidth) ||
692 (rItem.mnOldHeight != rItem.mnHeight) )
700 aRect.
SetRight( rItem.mnLeft+rItem.mnOldWidth-1 );
701 aRect.
SetTop( rItem.mnOldSplitPos );
706 aRect.
SetTop( rItem.mnTop );
707 aRect.
SetBottom( rItem.mnTop+rItem.mnOldHeight-1 );
708 aRect.
SetLeft( rItem.mnOldSplitPos );
716 aRect.
SetRight( rItem.mnLeft+rItem.mnWidth-1 );
717 aRect.
SetTop( rItem.mnSplitPos );
722 aRect.
SetTop( rItem.mnTop );
723 aRect.
SetBottom( rItem.mnTop+rItem.mnHeight-1 );
724 aRect.
SetLeft( rItem.mnSplitPos );
731 if ( rItem.mpSet && rItem.mpSet->mvItems.empty() )
734 aRect.
SetTop( rItem.mnTop );
735 aRect.
SetRight( rItem.mnLeft+rItem.mnWidth-1 );
736 aRect.
SetBottom( rItem.mnTop+rItem.mnHeight-1 );
745 for (
auto& rItem : rItems )
749 bool bTempHide = bHide;
750 if ( !rItem.mnWidth || !rItem.mnHeight )
757 if ( rItem.mnWidth && rItem.mnHeight && !bHide )
759 Point aPos( rItem.mnLeft, rItem.mnTop );
760 Size aSize( rItem.mnWidth, rItem.mnHeight );
761 rItem.mpWindow->SetPosSizePixel( aPos, aSize );
764 rItem.mpWindow->Hide();
769 for (
auto& rItem : rItems )
771 if ( rItem.mpWindow && rItem.mnWidth && rItem.mnHeight && !bHide )
772 rItem.mpWindow->Show();
783 for ( i = 0; i < nItems; i++ )
786 nRelSize += rItems[i].mnPixSize;
788 nPerSize += rItems[i].mnPixSize;
790 nPerSize += nRelSize;
791 for ( i = 0; i < nItems; i++ )
796 rItems[i].mnSize = (rItems[i].mnPixSize+(nRelSize/2))/nRelSize;
798 rItems[i].mnSize = 1;
803 rItems[i].mnSize = (rItems[i].mnPixSize*100)/nPerSize;
805 rItems[i].mnSize = 1;
808 rItems[i].mnSize = rItems[i].mnPixSize;
817 size_t nItems = pSet->
mvItems.size();
821 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
824 for (
size_t i = 0;
i < nItems-1;
i++)
826 if (rItems[
i].mnSplitSize)
828 nPos = rItems[
i].mnSplitPos;
834 nTop = rItems[
i].mnLeft;
835 nBottom = rItems[
i].mnLeft+rItems[
i].mnWidth-1;
837 if (bDown || (nItemSplitSize >= nSplitSize))
842 nPos += nSplitSize-2;
843 if ((!bDown && (nItemSplitSize >= 2)) ||
844 (bDown && (nItemSplitSize >= nSplitSize - 1)))
850 if (!bDown || (nItemSplitSize >= nSplitSize))
858 nTop = rItems[
i].mnTop;
859 nBottom = rItems[
i].mnTop+pSet->
mvItems[
i].mnHeight-1;
861 if (bDown || (nItemSplitSize >= nSplitSize))
867 if ((!bDown && (nItemSplitSize >= 2)) ||
868 (bDown && (nItemSplitSize >= nSplitSize - 1)))
874 if (!bDown || (nItemSplitSize >= nSplitSize))
883 for (
auto& rItem : rItems )
885 if (rItem.mpSet && rItem.mnWidth && rItem.mnHeight)
899 sal_uInt16 nSplitTest;
900 size_t nItems = pSet->
mvItems.size();
906 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
919 for (
size_t i = 0;
i < nItems-1;
i++ )
921 if ( rItems[
i].mnSplitSize )
925 nTop = rItems[
i].mnLeft;
926 nBottom = rItems[
i].mnLeft+rItems[
i].mnWidth-1;
930 nTop = rItems[
i].mnTop;
931 nBottom = rItems[
i].mnTop+rItems[
i].mnHeight-1;
933 nPos = rItems[
i].mnSplitPos;
935 if ( (nMPos1 >= nTop) && (nMPos1 <= nBottom) &&
936 (nMPos2 >= nPos) && (nMPos2 <= nPos+rItems[
i].mnSplitSize) )
938 if ( !rItems[
i].mbFixed && !rItems[
i+1].mbFixed )
940 rMouseOff = nMPos2-nPos;
954 for (
auto& rItem : rItems )
959 rMouseOff, ppFoundSet, rFoundPos,
989 nPos = pWindow->
mnDY-nBorder;
1003 nPos = pWindow->
mnDX-nBorder;
1012 if ( (nTPos >= nPos) && (nTPos <= nPos+nSplitSize+nBorder) )
1014 rMouseOff = nTPos-nPos;
1016 if ( !pWindow->
mpMainSet->mvItems.empty() )
1017 rFoundPos = pWindow->
mpMainSet->mvItems.size() - 1;
1053 aRect.
SetTop( rPos.Y() );
1132 else if ( Window::GetStyle() &
WB_3DLOOK )
1165 case WindowAlign::Top:
1169 case WindowAlign::Bottom:
1173 aPos.AdjustY( -nDelta );
1178 case WindowAlign::Left:
1182 case WindowAlign::Right:
1187 aPos.AdjustX( -nDelta );
1199 Size aSize( aNewSize );
1210 std::vector< ImplSplitItem* >::size_type
i;
1212 for ( i = 0; i <
mpMainSet->mvItems.size(); i++ )
1217 nCalcSize +=
mpMainSet->mvItems[i].mnSize;
1229 nCurSize -= nSplitSize;
1232 nDelta = nCalcSize-nCurSize;
1238 case WindowAlign::Top:
1241 case WindowAlign::Bottom:
1244 case WindowAlign::Left:
1247 case WindowAlign::Right:
1272 std::vector<ImplSplitItem *>::size_type
i;
1274 for ( i = 0; i <
mpMainSet->mvItems.size(); i++ )
1279 nCalcSize +=
mpMainSet->mvItems[i].mnSize;
1289 nCurSize -= nSplitSize;
1392 if ( nCenterEx > 0 )
1397 case WindowAlign::Top:
1408 case WindowAlign::Bottom:
1419 case WindowAlign::Left:
1430 case WindowAlign::Right:
1512 aPoly.
SetPoint(
Point(nCenter - nHeightHalf, nBottom - nMargin), 1);
1513 aPoly.
SetPoint(
Point(nCenter - nHeightHalf, nBottom - nMargin), 2);
1518 aPoly.
SetPoint(
Point(nCenter - nHeightHalf, nTop + nMargin), 1);
1519 aPoly.
SetPoint(
Point(nCenter + nHeightHalf, nTop + nMargin), 2);
1530 aPoly.
SetPoint(
Point(nRight - nMargin, nCenter - nWidthHalf), 1);
1531 aPoly.
SetPoint(
Point(nRight - nMargin, nCenter + nWidthHalf), 2);
1536 aPoly.
SetPoint(
Point(nLeft + nMargin, nCenter - nWidthHalf), 1);
1537 aPoly.
SetPoint(
Point(nLeft + nMargin, nCenter + nWidthHalf), 2);
1556 case WindowAlign::Top:
1557 case WindowAlign::Left:
1560 case WindowAlign::Bottom:
1561 case WindowAlign::Right:
1581 case WindowAlign::Bottom:
1582 case WindowAlign::Right:
1585 case WindowAlign::Top:
1586 case WindowAlign::Left:
1603 ImplSplitItem* pSplitItem;
1619 nCurMaxSize = aSize.
Height();
1621 nCurMaxSize = aSize.
Width();
1657 if ( pSplitItem->mbFixed )
1699 std::vector<ImplSplitItem *>::size_type nTemp =
mnSplitPos+1;
1700 while ( nTemp < mpSplitSet->mvItems.size() )
1703 if ( pSplitItem->mbFixed )
1763 for ( sal_uInt16
i = 0;
i < nItems;
i++ )
1815 if ( aTestRect.
Contains( aMousePosPixel ) )
1824 if ( aTestRect.
Contains( aMousePosPixel ) )
1852 sal_uInt16 nTempSplitPos;
1853 sal_uInt16 nSplitTest =
ImplTestSplit(
this, aPos, nTemp, &pTempSplitSet, nTempSplitPos );
1860 if ( !aFadeInRect.
Contains( aPos ) &&
1897 bool bNewPressed = aTestRect.
Contains( aMousePosPixel );
1923 bool bNewPressed = aTestRect.
Contains( aMousePosPixel );
1952 size_t nItems = rItems.size();
1953 for (
size_t i = 0;
i < nItems;
i++ )
1998 bPropSmaller, bPropGreater );
2049 return Window::PreNotify( rNEvt );
2088 if ( aHelpRect.Contains( aMousePosPixel ) )
2089 pHelpResId = SV_HELPTEXT_FADEIN;
2093 if ( aHelpRect.Contains( aMousePosPixel ) )
2094 pHelpResId = SV_HELPTEXT_FADEOUT;
2101 aHelpRect.SetLeft( aPt.X() );
2102 aHelpRect.SetTop( aPt.Y() );
2104 aHelpRect.SetRight( aPt.X() );
2105 aHelpRect.SetBottom( aPt.Y() );
2155 sal_uInt16 nPos, sal_uInt16 nIntoSetId,
2159 sal_uInt16 nDbgDummy;
2169 SAL_WARN_IF( !pSet,
"vcl",
"SplitWindow::InsertItem() - Set not exists" );
2177 if ( nPos > pSet->
mvItems.size() )
2184 ImplSplitItem & aItem = pSet->
mvItems[nPos];
2185 aItem.mnSize = nSize;
2186 aItem.mnPixSize = 0;
2188 aItem.mnBits = nBits;
2195 aItem.mpWindow = pWindow;
2196 aItem.mpOrgParent = pWindow->
GetParent();
2205 pNewSet->
mnId = nId;
2208 aItem.mpSet.reset(pNewSet);
2217 sal_uInt16 nPos, sal_uInt16 nIntoSetId,
2220 InsertItem( nId,
nullptr, nSize, nPos, nIntoSetId, nBits );
2226 sal_uInt16 nDbgDummy;
2237 ImplSplitItem* pItem = &pSet->
mvItems[nPos];
2243 pItem->mpSet.reset();
2265 bool bPropSmall,
bool bPropGreat )
2273 size_t nItems = pSet->
mvItems.size();
2274 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
2278 nNewSize = ValidateSize(nNewSize, rItems[nPos]);
2282 rItems[nPos].mnSize = nNewSize;
2286 tools::Long nDelta = nNewSize-rItems[nPos].mnPixSize;
2291 sal_uInt16 nMin = 0;
2292 sal_uInt16 nMax = nItems;
2293 for (
size_t i = 0;
i < nItems; ++
i)
2295 if ( rItems[
i].mbFixed )
2309 if ( nPos < pSet->mvItems.size()-1 )
2311 if ( !((bPropSmall && bPropGreat) ||
2312 ((nDelta > 0) && bPropSmall) ||
2313 ((nDelta < 0) && bPropGreat)) )
2329 else if ( nPos >= nMax )
2334 else if ( nPos && (nPos >= pSet->
mvItems.size()-1) )
2338 bool bTemp = bPropSmall;
2339 bPropSmall = bPropGreat;
2359 rItems[n].mnPixSize++;
2366 while ( nTempDelta );
2369 rItems[nPos+1].mnPixSize -= nDelta;
2381 if ( nDelta && rItems[n-1].mnPixSize )
2383 rItems[n-1].mnPixSize--;
2398 if ( rItems[n-1].mnPixSize+nDelta < 0 )
2400 nDelta += rItems[n-1].mnPixSize;
2401 rItems[n-1].mnPixSize = 0;
2405 rItems[n-1].mnPixSize += nDelta;
2428 rItems[n-1].mnPixSize++;
2435 while ( nTempDelta );
2438 rItems[nPos].mnPixSize += nDelta;
2450 if ( nDelta && rItems[n].mnPixSize )
2452 rItems[n].mnPixSize--;
2467 if ( rItems[n].mnPixSize-nDelta < 0 )
2469 nDelta -= rItems[n].mnPixSize;
2470 rItems[n].mnPixSize = 0;
2474 rItems[n].mnPixSize -= nDelta;
2494 ImplSplitItem* pItem;
2501 if ( pItem->mnSize != nNewSize )
2504 pItem->mnSize = nNewSize;
2516 return pSet->
mvItems[nPos].mnSize;
2528 if ( nBits == pSet->
mvItems[nPos].mnBits )
2529 return pSet->
mvItems[nPos].mnSize;
2538 nItems = pSet->
mvItems.size();
2539 std::vector< ImplSplitItem >& rItems = pSet->
mvItems;
2540 for (
size_t i = 0;
i < nItems;
i++ )
2545 nTempBits = rItems[
i].mnBits;
2547 nRelSize += rItems[
i].mnPixSize;
2549 nPerSize += rItems[
i].mnPixSize;
2551 nPerSize += nRelSize;
2555 return (rItems[nPos].mnPixSize+(nRelSize/2))/nRelSize;
2562 return (rItems[nPos].mnPixSize*100)/nPerSize;
2567 return rItems[nPos].mnPixSize;
2579 if (pSet !=
nullptr)
2581 pSet->
mvItems[nPos].mnMinSize = rRange.
Min();
2582 pSet->
mvItems[nPos].mnMaxSize = rRange.
Max();
2602 return pSet !=
nullptr;
2622 for (
size_t i = 0;
i < pSet->
mvItems.size();
i++ )
2624 if ( pSet->
mvItems[
i].mnId == nId )
2638 if ( pSet && (nPos < pSet->mvItems.size()) )
2639 return pSet->
mvItems[nPos].mnId;
2657 case WindowAlign::Top:
2661 case WindowAlign::Bottom:
2665 case WindowAlign::Left:
2669 case WindowAlign::Right:
const Color & GetShadowColor() const
bool IsControlBackground() const
sal_uInt16 mnMouseModifier
Point GetPointerPosPixel()
static void ImplCalcBorder(WindowAlign eAlign, tools::Long &rLeft, tools::Long &rTop, tools::Long &rRight, tools::Long &rBottom)
#define SPLITWIN_SPLITSIZEAUTOHIDE
SplitWindow(const SplitWindow &)=delete
void SetAntialiasing(AntialiasingFlags nMode)
static void ImplCalcSet(ImplSplitSet *pSet, tools::Long nSetLeft, tools::Long nSetTop, tools::Long nSetWidth, tools::Long nSetHeight, bool bRows, bool bDown=true)
constexpr sal_uInt16 KEY_MOD1
tools::Long mnRightBorder
static SAL_DLLPRIVATE void ImplCalcSet2(SplitWindow *pWindow, ImplSplitSet *pSet, bool bHide, bool bRows)
void InsertItem(sal_uInt16 nId, vcl::Window *pWindow, tools::Long nSize, sal_uInt16 nPos, sal_uInt16 nIntoSetId, SplitWindowItemFlags nBits)
virtual void MouseButtonDown(const MouseEvent &rMEvt)
virtual void StartSplit()
MouseEventModifiers GetMode() const
virtual void Tracking(const TrackingEvent &rTEvt) override
const StyleSettings & GetStyleSettings() const
const Color & GetFaceColor() const
SAL_DLLPRIVATE void ImplGetFadeOutRect(tools::Rectangle &rRect) const
void DrawPolygon(const tools::Polygon &rPoly)
Render the given polygon.
virtual void SetSizePixel(const Size &rNewSize)
void SetItemSizeRange(sal_uInt16 nId, const Range &rRange)
Set a range that limits the (variable part of the) size with an upper and a lower bound (both are val...
SAL_DLLPRIVATE void ImplGetFadeInRect(tools::Rectangle &rRect, bool bTest=false) const
SAL_DLLPRIVATE void ImplGetButtonRect(tools::Rectangle &rRect, bool bTest) const
DataChangedEventType GetType() const
void SetItemSize(sal_uInt16 nId, tools::Long nNewSize)
tools::Long mnBottomBorder
const Color & GetControlBackground() const
Point GetPosPixel() const override
void StartTracking(StartTrackingFlags nFlags=StartTrackingFlags::NONE)
AntialiasingFlags GetAntialiasing() const
HelpEventMode GetMode() const
SAL_DLLPRIVATE void ImplNewAlign()
constexpr tools::Long Width() const
sal_uInt16 GetClicks() const
std::unique_ptr< tools::Long[]> mpLastSizes
ImplSplitSet * mpSplitSet
SAL_DLLPRIVATE void ImplDrawSplitTracking(const Point &rPos)
sal_uInt16 GetButtons() const
static void ImplCalcLogSize(std::vector< ImplSplitItem > &rItems, size_t nItems)
#define SPLITWIN_SPLITSIZEFADE
bool IsEnterWindow() const
void ShowTracking(const tools::Rectangle &rRect, ShowTrackFlags nFlags=ShowTrackFlags::Small)
SAL_DLLPRIVATE void ImplSplitMousePos(Point &rMousePos)
SAL_DLLPRIVATE void ImplDrawBorder(vcl::RenderContext &rRenderContext)
AllSettingsFlags GetFlags() const
SAL_DLLPRIVATE void ImplDrawFadeIn(vcl::RenderContext &rRenderContext)
const Color & GetLightColor() const
tools::Long GetItemSize(sal_uInt16 nId) const
virtual void Paint(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect) override
WinBits const WB_NOSPLITDRAW
void RemoveItem(sal_uInt16 nId)
std::unique_ptr< ImplSplitSet > mpMainSet
SAL_DLLPRIVATE void ImplInit(vcl::Window *pParent, WinBits nStyle)
void DrawLine(const Point &rStartPt, const Point &rEndPt)
Size GetOutputSizePixel() const
#define SPLITWIN_SPLITSIZE
void DrawRect(const tools::Rectangle &rRect)
virtual void MouseMove(const MouseEvent &rMEvt) override
void ShowFadeInHideButton()
OUString VclResId(TranslateId aId)
const Point & GetMousePosPixel() const
#define SPLITWINDOW_ITEM_NOTFOUND
bool IsItemValid(sal_uInt16 nId) const
const Color & GetDarkShadowColor() const
VclPtr< vcl::Window > mpWindow
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects...
bool IsLeaveWindow() const
static SAL_DLLPRIVATE sal_uInt16 ImplTestSplit(ImplSplitSet *pSet, const Point &rPos, tools::Long &rMouseOff, ImplSplitSet **ppFoundSet, sal_uInt16 &rFoundPos, bool bRows)
static ImplSplitSet * ImplFindSet(ImplSplitSet *pSet, sal_uInt16 nId)
void SetParent(vcl::Window *pNewParent)
virtual void Invalidate(InvalidateFlags nFlags=InvalidateFlags::NONE)
SAL_DLLPRIVATE void ImplCalcLayout()
bool IsUpdateMode() const
Some things multiple-inherit from VclAbstractDialog and OutputDevice, so we need to use virtual inher...
const AllSettings & GetSettings() const
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
Link< SplitWindow *, void > maSplitHdl
static ImplSplitSet * ImplFindItem(ImplSplitSet *pSet, sal_uInt16 nId, sal_uInt16 &rPos)
Size CalcLayoutSizePixel(const Size &aNewSize)
MouseNotifyEvent GetType() const
virtual void dispose() override
This is intended to be used to clear any locally held references to other Window-subclass objects...
const AllSettings & GetSettings() const
void SetAlign(WindowAlign eNewAlign)
virtual void RequestHelp(const HelpEvent &rHEvt) override
sal_uInt16 GetModifier() const
Point ScreenToOutputPixel(const Point &rPos) const
bool KeyboardActivated() const
static void ShowQuickHelp(vcl::Window *pParent, const tools::Rectangle &rScreenRect, const OUString &rHelpText, QuickHelpFlags nStyle=QuickHelpFlags::NONE)
vcl::Window * GetParent() const
bool IsReallyShown() const
bool IsTrackingEnded() const
virtual void StateChanged(StateChangedType nType) override
virtual void Resize() override
virtual void SetPosSizePixel(const Point &rNewPos, const Size &rNewSize)
virtual ~SplitWindow() override
void SplitItem(sal_uInt16 nId, tools::Long nNewSize, bool bPropSmall, bool bPropGreat)
tools::Long const nBorder
sal_uInt16 GetSet(sal_uInt16 nId) const
virtual void MouseButtonDown(const MouseEvent &rMEvt) override
WinBits const WB_SIZEABLE
bool IsModifierChanged() const
void SetPointer(PointerStyle)
Size GetSizePixel() const override
tools::Long GetFadeInSize() const
SAL_DLLPRIVATE void ImplInitSettings()
#define SAL_WARN_IF(condition, area, stream)
SAL_DLLPRIVATE void ImplDrawBorderLine(vcl::RenderContext &rRenderContext)
std::vector< ImplSplitItem > mvItems
constexpr tools::Long Height() const
sal_uInt16 GetItemId(vcl::Window *pWindow) const
const MouseEvent * GetMouseEvent() const
if(aStr!=aBuf) UpdateName_Impl(m_xFollowLb.get()
tools::Long AdjustWidth(tools::Long n)
virtual void StateChanged(StateChangedType nType) override
const Color & GetWindowColor() const
const Point & GetPosPixel() const
tools::Long AdjustHeight(tools::Long n)
SAL_DLLPRIVATE void ImplUpdate()
SAL_DLLPRIVATE void ImplDrawFadeOut(vcl::RenderContext &rRenderContext)
sal_uInt16 GetItemPos(sal_uInt16 nId, sal_uInt16 nSetId=0) const
#define SPLITWIN_SPLITSIZEEXLN
Size GetOutputSizePixel() const
bool IsTrackingCanceled() const
SAL_DLLPRIVATE void ImplSetWindowSize(tools::Long nDelta)
SAL_DLLPRIVATE void ImplDrawGrip(vcl::RenderContext &rRenderContext, const tools::Rectangle &rRect, bool bHorz, bool bLeft)
Point OutputToScreenPixel(const Point &rPos) const
Point GetLastPointerPosPixel()
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
constexpr sal_uInt16 KEY_SHIFT
const MouseEvent & GetMouseEvent() const
bool IsReallyVisible() const
virtual bool PreNotify(NotifyEvent &rNEvt) override
SAL_DLLPRIVATE void ImplInit(vcl::Window *pParent, WinBits nStyle)
sal_uInt16 GetItemCount(sal_uInt16 nSetId=0) const
virtual void RequestHelp(const HelpEvent &rHEvt)
virtual void DataChanged(const DataChangedEvent &rDCEvt) override
WinBits const WB_CLIPCHILDREN
tools::Rectangle maDragRect
#define SPLITWIN_SPLITSIZEEX
static void ImplDrawSplit(vcl::RenderContext &rRenderContext, ImplSplitSet *pSet, bool bRows, bool bDown)
static void ShowBalloon(vcl::Window *pParent, const Point &rScreenPos, const tools::Rectangle &, const OUString &rHelpText)
virtual void SplitResize()
SAL_DLLPRIVATE void ImplStartSplit(const MouseEvent &rMEvt)
bool m_bDetectedRangeSegmentation false