[Libreoffice-commits] core.git: vcl/workben
Michael Meeks
michael.meeks at collabora.com
Wed Mar 18 08:40:13 PDT 2015
vcl/workben/vcldemo.cxx | 64 ++++++++++++++++++++++++++++++++++--------------
1 file changed, 46 insertions(+), 18 deletions(-)
New commits:
commit 1956ad6dba11ad7c604fdf7a4327e1c18690e0db
Author: Michael Meeks <michael.meeks at collabora.com>
Date: Wed Mar 18 15:44:50 2015 +0000
vcldemo: create --popup mode demonstrating Windows GL issue.
Change-Id: I562dc891173fbbc151adab39a0dfae42918f88af
diff --git a/vcl/workben/vcldemo.cxx b/vcl/workben/vcldemo.cxx
index d3c1198..f272ccb 100644
--- a/vcl/workben/vcldemo.cxx
+++ b/vcl/workben/vcldemo.cxx
@@ -37,6 +37,7 @@
#include <vcl/salbtype.hxx>
#include <vcl/bmpacc.hxx>
#include <vcl/help.hxx>
+
#include <basegfx/numeric/ftools.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <vcldemo-debug.hxx>
@@ -1448,9 +1449,6 @@ class DemoWidgets : public WorkWindow
ToolBox *mpToolbox;
PushButton *mpButton;
- Timer maHelpTimer;
- DECL_LINK (HelpTimerCb, void *);
-
public:
DemoWidgets() :
WorkWindow(NULL, WB_STDWORK),
@@ -1478,17 +1476,15 @@ public:
mpButton->Show();
Show();
-
- maHelpTimer.SetTimeoutHdl(LINK(this,DemoWidgets,HelpTimerCb));
- maHelpTimer.SetTimeout(1000);
- maHelpTimer.Start();
}
+
virtual ~DemoWidgets()
{
delete mpButton;
delete mpToolbox;
delete mpBox;
}
+
virtual void Paint(const Rectangle&) SAL_OVERRIDE
{
Rectangle aWholeSize(Point(0, 0),GetOutputSizePixel());
@@ -1516,17 +1512,44 @@ public:
}
};
-// Horrible code to manually provoke a help event
-IMPL_LINK_NOARG(DemoWidgets,HelpTimerCb)
+class DemoPopup : public FloatingWindow
{
- Point aPos = mpToolbox->GetPosPixel();
- aPos.Move(10,10);
- HelpEvent aHelpEvent( aPos, HelpEventMode::BALLOON );
-// pSVData->maHelpData.mbRequestingHelp = true;
- mpToolbox->RequestHelp( aHelpEvent );
-// pSVData->maHelpData.mbRequestingHelp = false;
- return 0;
-}
+ public:
+ DemoPopup() : FloatingWindow( NULL, WB_SYSTEMWINDOW|WB_TOOLTIPWIN)
+ {
+ SetType( WINDOW_HELPTEXTWINDOW );
+
+ SetOutputSizePixel( Size( 300, 30 ) );
+ SetBackground(Wallpaper(COL_YELLOW));
+
+ Show( true, SHOW_NOACTIVATE );
+ Update();
+ }
+
+ virtual void Paint( const Rectangle& ) SAL_OVERRIDE
+ {
+ // Interestingly in GL mode on Windows, this doesn't render.
+
+ Size aSize = GetOutputSizePixel();
+ Rectangle aTextRect(Point(6, 6), aSize);
+
+ SetTextColor(COL_BLACK);
+ SetTextAlign(ALIGN_TOP);
+ DrawText(aTextRect, "This is a standalone help text test",
+ TEXT_DRAW_MULTILINE|TEXT_DRAW_WORDBREAK|
+ TEXT_DRAW_LEFT|TEXT_DRAW_TOP);
+
+ SetLineColor(COL_BLACK);
+ SetFillColor();
+ DrawRect( Rectangle( Point(), aSize ) );
+ aSize.Width() -= 2;
+ aSize.Height() -= 2;
+ Color aColor( GetLineColor() );
+ SetLineColor( ( COL_GRAY ) );
+ DrawRect( Rectangle( Point( 1, 1 ), aSize ) );
+ SetLineColor( aColor );
+ }
+};
class DemoApp : public Application
{
@@ -1552,7 +1575,7 @@ public:
{
try
{
- bool bWidgets = false, bThreads = false;
+ bool bWidgets = false, bThreads = false, bPopup = false;
DemoRenderer aRenderer;
for (sal_Int32 i = 0; i < GetCommandLineParamCount(); i++)
@@ -1577,6 +1600,8 @@ public:
}
else if (aArg == "--widgets")
bWidgets = true;
+ else if (aArg == "--popup")
+ bPopup = true;
else if (aArg == "--threads")
bThreads = true;
else if (aArg.startsWith("--"))
@@ -1589,11 +1614,14 @@ public:
DemoWin aMainWin(aRenderer, bThreads);
std::unique_ptr<DemoWidgets> xWidgets;
+ std::unique_ptr<DemoPopup> xPopup;
aMainWin.SetText("Interactive VCL demo #1");
if (bWidgets)
xWidgets.reset(new DemoWidgets());
+ else if (bPopup)
+ xPopup.reset(new DemoPopup());
else
aMainWin.Show();
More information about the Libreoffice-commits
mailing list