Attachment #474332: Part 2. Ignore popup child widgets when updating. for bug #588403

View | Details | Raw Unified | Return to bug 588403
Collapse All | Expand All

(-)a/view/src/nsViewManager.cpp (-1 / +4 lines)
Line     Link Here 
 Lines 604-620   nsViewManager::UpdateWidgetArea(nsView * Link Here 
604
  if (aWidget->GetTransparencyMode() != eTransparencyTransparent) {
604
  if (aWidget->GetTransparencyMode() != eTransparencyTransparent) {
605
    for (nsIWidget* childWidget = aWidget->GetFirstChild();
605
    for (nsIWidget* childWidget = aWidget->GetFirstChild();
606
         childWidget;
606
         childWidget;
607
         childWidget = childWidget->GetNextSibling()) {
607
         childWidget = childWidget->GetNextSibling()) {
608
      nsView* view = nsView::GetViewFor(childWidget);
608
      nsView* view = nsView::GetViewFor(childWidget);
609
      NS_ASSERTION(view != aWidgetView, "will recur infinitely");
609
      NS_ASSERTION(view != aWidgetView, "will recur infinitely");
610
      PRBool visible;
610
      PRBool visible;
611
      childWidget->IsVisible(visible);
611
      childWidget->IsVisible(visible);
612
      if (view && visible && !IsWidgetDrawnByPlugin(childWidget, view)) {
612
      nsWindowType type;
613
      childWidget->GetWindowType(type);
614
      if (view && visible && !IsWidgetDrawnByPlugin(childWidget, view) &&
615
          type != eWindowType_popup) {
613
        // Don't mess with views that are in completely different view
616
        // Don't mess with views that are in completely different view
614
        // manager trees
617
        // manager trees
615
        nsViewManager* viewManager = view->GetViewManager();
618
        nsViewManager* viewManager = view->GetViewManager();
616
        if (viewManager->RootViewManager() == RootViewManager()) {
619
        if (viewManager->RootViewManager() == RootViewManager()) {
617
          // get the damage region into view's coordinate system and appunits
620
          // get the damage region into view's coordinate system and appunits
618
          nsRegion damage =
621
          nsRegion damage =
619
            ConvertRegionBetweenViews(intersection, aWidgetView, view);
622
            ConvertRegionBetweenViews(intersection, aWidgetView, view);
620
623

Return to bug 588403