<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>108327</bug_id>
          
          <creation_ts>2013-01-30 04:46:02 -0800</creation_ts>
          <short_desc>[Qt] visibility of embedded widget</short_desc>
          <delta_ts>2013-02-01 02:43:29 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Qt</component>
          <version>525.x (Safari 3.2)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="123powerd231">kvodinskiy</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>hausmann</cc>
    
    <cc>pierre.rossi</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>820096</commentid>
    <comment_count>0</comment_count>
    <who name="123powerd231">kvodinskiy</who>
    <bug_when>2013-01-30 04:46:02 -0800</bug_when>
    <thetext>My app uses qtwebkit and embedded in webpage widget through my derived QWebPluginFactory.
My web page uses some layers one of which is my widget.
The problem: Widget is visible, but his parent layer isn’t visible(css property visibility:hidden)

My toolset: Qt 5.0.0, mvs c++ compiler(visual studio 2008sp1+sdk), windows 7</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821126</commentid>
    <comment_count>1</comment_count>
    <who name="123powerd231">kvodinskiy</who>
    <bug_when>2013-01-30 23:30:24 -0800</bug_when>
    <thetext>1) I noticed that the first calls
Qt5WebKitWidgetsd.dll! QWidgetPluginImpl :: setVisible (bool visible = false) Line 52
 Qt5WebKitd.dll! WebCore :: QtPluginWidget :: hide () Line 1439
 Qt5WebKitd.dll! WebCore :: RenderWidget :: styleDidChange (WebCore :: StyleDifference diff = StyleDifferenceRepaint, const WebCore :: RenderStyle * oldStyle = 0x1881ea50) Line 226
 Qt5WebKitd.dll! WebCore :: RenderObject :: setStyle (WTF :: PassRefPtr &lt;WebCore::RenderStyle&gt; style = {...}) Line 1801
 Qt5WebKitd.dll! WebCore :: RenderObject :: setAnimatableStyle (WTF :: PassRefPtr &lt;WebCore::RenderStyle&gt; style = {...}) Line 1697
 Qt5WebKitd.dll! WebCore :: Element :: recalcStyle (WebCore :: Node :: StyleChange change = Inherit) Line 1293 + 0x19 bytes C + +
...
 Qt5WebKitd.dll! WebCore :: Element :: recalcStyle (WebCore :: Node :: StyleChange change = NoChange) Line 1346 C + +
...
 Qt5WebKitd.dll! WebCore :: Document :: updateStyleIfNeeded () Line 1892
 Qt5WebKitd.dll! WebCore :: Document :: styleRecalcTimerFired (WebCore :: Timer &lt;WebCore::Document&gt; * __ formal = 0x06b5f108) Line 1781
 Qt5WebKitd.dll! WebCore :: Timer &lt;WebCore::CSSFontSelector&gt; :: fired () Line 106 + 0x1f bytes
 Qt5WebKitd.dll! WebCore :: ThreadTimers :: sharedTimerFiredInternal () Line 119
 Qt5WebKitd.dll! WebCore :: ThreadTimers :: sharedTimerFired () Line 94
 Qt5WebKitd.dll! WebCore :: SharedTimerQt :: timerEvent (QTimerEvent * ev = 0x0522c83c) Line 114
 Qt5Cored.dll! QObject :: event (QEvent * e = 0x0522c83c) Line 1052



2) followed
Qt5WebKitWidgetsd.dll! QWidgetPluginImpl :: setVisible (bool visible = true) Line 52
 Qt5WebKitWidgetsd.dll! QWidgetPluginImpl :: setGeometryAndClip (const QRect &amp; geometry = {...}, const QRect &amp; clipRect = {...}, bool isVisible = true) Line 45
 Qt5WebKitd.dll! WebCore :: QtPluginWidget :: frameRectsChanged () Line 1428
 Qt5WebKitd.dll! WebCore :: Widget :: setFrameRect (const WebCore :: IntRect &amp; rect = {...}) Line 71
 Qt5WebKitd.dll! WebCore :: RenderWidget :: setWidgetGeometry (const WebCore :: LayoutRect &amp; frame = {...}) Line 159
 Qt5WebKitd.dll! WebCore :: RenderWidget :: updateWidgetGeometry () Line 179
 Qt5WebKitd.dll! WebCore :: RenderWidget :: updateWidgetPosition () Line 334 + 0x8 bytes
 Qt5WebKitd.dll! WebCore :: RenderView :: updateWidgetPositions () Line 764 + 0x13 bytes
 Qt5WebKitd.dll! WebCore :: FrameView :: performPostLayoutTasks () Line 2499
 Qt5WebKitd.dll! WebCore :: FrameView :: layout (bool allowSubtree = true) Line 1255
 Qt5WebKitd.dll! WebCore :: FrameView :: layoutTimerFired (WebCore :: Timer &lt;WebCore::FrameView&gt; * __ formal = 0x0ad8cf58) Line 2137
 Qt5WebKitd.dll! WebCore :: Timer &lt;WebCore::CSSFontSelector&gt; :: fired () Line 106 + 0x1f bytes
 Qt5WebKitd.dll! WebCore :: ThreadTimers :: sharedTimerFiredInternal () Line 119
 Qt5WebKitd.dll! WebCore :: ThreadTimers :: sharedTimerFired () Line 94
 Qt5WebKitd.dll! WebCore :: SharedTimerQt :: timerEvent (QTimerEvent * ev = 0x052169ec) Line 114
 Qt5Cored.dll! QObject :: event (QEvent * e = 0x052169ec) Line 1052</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821335</commentid>
    <comment_count>2</comment_count>
    <who name="123powerd231">kvodinskiy</who>
    <bug_when>2013-01-31 03:36:14 -0800</bug_when>
    <thetext>The problem is that QtPluginWidget::hide not call Widget::hide()

fix code: 

virtual void show()
{
 Widget::show();
 handleVisibility();
}
virtual void hide()
{
 Widget::hide();
 handleVisibility();
}

void handleVisibility()
{
 if (platformWidget())
  widgetAdapter()-&gt;setVisible(isVisible());
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822426</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2013-02-01 00:26:27 -0800</bug_when>
    <thetext>You&apos;re right. However http://trac.webkit.org/changeset/135515 added an implementation of hide() that will call setVisible(false) on the widget now :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>822550</commentid>
    <comment_count>4</comment_count>
    <who name="Pierre Rossi">pierre.rossi</who>
    <bug_when>2013-02-01 02:43:29 -0800</bug_when>
    <thetext>Nice catch !

Should be fixed in r141569 &lt;http://trac.webkit.org/changeset/141569&gt;</thetext>
  </long_desc>
      
      

    </bug>

</bugzilla>