summaryrefslogtreecommitdiffstats
path: root/Source/WebCore/plugins/win/PluginViewWin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/plugins/win/PluginViewWin.cpp')
-rw-r--r--Source/WebCore/plugins/win/PluginViewWin.cpp23
1 files changed, 18 insertions, 5 deletions
diff --git a/Source/WebCore/plugins/win/PluginViewWin.cpp b/Source/WebCore/plugins/win/PluginViewWin.cpp
index 3fa897db8..b225673ab 100644
--- a/Source/WebCore/plugins/win/PluginViewWin.cpp
+++ b/Source/WebCore/plugins/win/PluginViewWin.cpp
@@ -345,6 +345,17 @@ static bool isWindowsMessageUserGesture(UINT message)
}
}
+static inline bool isWebViewVisible(FrameView* view)
+{
+#if PLATFORM(QT)
+ if (PlatformPageClient client = view->hostWindow()->platformPageClient())
+ return client->isViewVisible();
+ return false;
+#else
+ return true;
+#endif // PLATFORM(QT)
+}
+
static inline IntPoint contentsToNativeWindow(FrameView* view, const IntPoint& point)
{
#if PLATFORM(QT)
@@ -511,9 +522,10 @@ void PluginView::show()
{
setSelfVisible(true);
- if (isParentVisible() && platformPluginWidget())
+ if (isParentVisible() && platformPluginWidget()) {
ShowWindow(platformPluginWidget(), SW_SHOWNA);
-
+ forceRedraw();
+ }
Widget::show();
}
@@ -819,9 +831,10 @@ void PluginView::setParentVisible(bool visible)
Widget::setParentVisible(visible);
if (isSelfVisible() && platformPluginWidget()) {
- if (visible)
+ if (visible) {
ShowWindow(platformPluginWidget(), SW_SHOWNA);
- else
+ forceRedraw();
+ } else
ShowWindow(platformPluginWidget(), SW_HIDE);
}
}
@@ -1019,7 +1032,7 @@ bool PluginView::platformStart()
#endif
DWORD flags = WS_CHILD;
- if (isSelfVisible())
+ if (isSelfVisible() && isWebViewVisible(toFrameView(parent())))
flags |= WS_VISIBLE;
HWND parentWindowHandle = windowHandleForPageClient(m_parentFrame->view()->hostWindow()->platformPageClient());