summaryrefslogtreecommitdiff
path: root/slideshow/source/engine/shapes/viewmediashape.cxx
diff options
context:
space:
mode:
authorZolnai Tamás <tamas.zolnai@collabora.com>2014-05-15 12:49:57 +0200
committerZolnai Tamás <tamas.zolnai@collabora.com>2014-05-15 14:23:42 +0200
commit21a2ce0d09a34ca63aebb3821ce120a8e00e0d68 (patch)
tree03a4603cb7463470a85f5988c1f76ca67ba32e42 /slideshow/source/engine/shapes/viewmediashape.cxx
parent8099056f50f4587cb03b76cf6bac7e876f6ff967 (diff)
slideshow\glTF: add a parent window to the OpenGL window
OpenGL window is a SystemChildWindow which doesn't handle window events as a vcl Window does (call it's event handler functions and the given event listeners), so I added a new parent which will handle window events and capture them from the slideshow's main window. Change-Id: I06ac87fb85e663e52f2691c1311605b3fd7d3afa
Diffstat (limited to 'slideshow/source/engine/shapes/viewmediashape.cxx')
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.cxx29
1 files changed, 23 insertions, 6 deletions
diff --git a/slideshow/source/engine/shapes/viewmediashape.cxx b/slideshow/source/engine/shapes/viewmediashape.cxx
index d854151db20f..ab972353b3a5 100644
--- a/slideshow/source/engine/shapes/viewmediashape.cxx
+++ b/slideshow/source/engine/shapes/viewmediashape.cxx
@@ -75,7 +75,8 @@ namespace slideshow
const uno::Reference< drawing::XShape >& rxShape,
const uno::Reference< uno::XComponentContext >& rxContext ) :
mpViewLayer( rViewLayer ),
- mpMediaWindow(),
+ mpMediaWindow(0),
+ mpEventHandlerParent(0),
maWindowOffset( 0, 0 ),
maBounds(),
mxShape( rxShape ),
@@ -149,6 +150,7 @@ namespace slideshow
}
mpMediaWindow.reset();
+ mpEventHandlerParent.reset();
// shutdown player
if( mxPlayer.is() )
@@ -277,7 +279,15 @@ namespace slideshow
if( mpMediaWindow.get() )
{
- mpMediaWindow->SetPosSizePixel( aPosPixel, aSizePixel );
+ if( mpEventHandlerParent )
+ {
+ mpEventHandlerParent->SetPosSizePixel( aPosPixel, aSizePixel );
+ mpMediaWindow->SetPosSizePixel( Point(0,0), aSizePixel );
+ }
+ else
+ {
+ mpMediaWindow->SetPosSizePixel( aPosPixel, aSizePixel );
+ }
mxPlayerWindow->setPosSize( 0, 0,
aSizePixel.Width(), aSizePixel.Height(),
0 );
@@ -463,16 +473,22 @@ namespace slideshow
rRangePix.getMaxY() - rRangePix.getMinY() );
if( avmedia::IsModel(rMimeType) )
{
- SystemWindowData aWinData = OpenGLContext::generateWinData(pWindow);
- mpMediaWindow.reset(new SystemChildWindow(pWindow, 0, &aWinData));
+ mpEventHandlerParent.reset(new Window(pWindow, WB_NOBORDER|WB_NODIALOGCONTROL));
+ mpEventHandlerParent->SetPosSizePixel( Point( aAWTRect.X, aAWTRect.Y ),
+ Size( aAWTRect.Width, aAWTRect.Height ) );
+ mpEventHandlerParent->Show();
+ SystemWindowData aWinData = OpenGLContext::generateWinData(mpEventHandlerParent.get());
+ mpMediaWindow.reset(new SystemChildWindow(mpEventHandlerParent.get(), 0, &aWinData));
+ mpMediaWindow->SetPosSizePixel( Point( 0, 0 ),
+ Size( aAWTRect.Width, aAWTRect.Height ) );
}
else
{
mpMediaWindow.reset( new SystemChildWindow( pWindow, WB_CLIPCHILDREN ) );
+ mpMediaWindow->SetPosSizePixel( Point( aAWTRect.X, aAWTRect.Y ),
+ Size( aAWTRect.Width, aAWTRect.Height ) );
}
mpMediaWindow->SetBackground( Color( COL_BLACK ) );
- mpMediaWindow->SetPosSizePixel( Point( aAWTRect.X, aAWTRect.Y ),
- Size( aAWTRect.Width, aAWTRect.Height ) );
mpMediaWindow->SetParentClipMode( PARENTCLIPMODE_NOCLIP );
mpMediaWindow->EnableEraseBackground( false );
mpMediaWindow->EnablePaint( false );
@@ -504,6 +520,7 @@ namespace slideshow
//if there was no playerwindow, then clear the mpMediaWindow too
//so that we can draw a placeholder instead in that space
mpMediaWindow.reset();
+ mpEventHandlerParent.reset();
}
}
}