void Widget::invalidateRect(const IntRect& r) { if (data->m_widget) //plugins return data->m_widget->update(r); IntRect windowRect = convertToContainingWindow(r); // Get our clip rect and intersect with it to ensure we don't invalidate too much. IntRect clipRect = windowClipRect(); windowRect.intersect(clipRect); QWidget *canvas = qwidget(); //regular frameview if (!canvas && parent()) canvas = parent()->qwidget(); //scrollbars if (!canvas) // not visible anymore return; bool painting = canvas->testAttribute(Qt::WA_WState_InPaintEvent); if (painting) { QWebPage *page = qobject_cast<QWebPage*>(canvas); QPainter p(page); page->mainFrame()->render(&p, windowRect); } else { canvas->update(windowRect); } }
IntRect PlatformScrollbar::windowClipRect() const { if (m_client) return m_client->windowClipRect(); return convertToContainingWindow(IntRect(0, 0, width(), height())); }
void Widget::invalidateRect(const IntRect& rect) { if (data->suppressInvalidation) return; if (!parent()) { gtk_widget_queue_draw_area(GTK_WIDGET(containingWindow()), rect.x(), rect.y(), rect.width(), rect.height()); if (isFrameView()) static_cast<FrameView*>(this)->addToDirtyRegion(rect); return; } // Get the root widget. ScrollView* outermostView = parent(); while (outermostView && outermostView->parent()) outermostView = outermostView->parent(); if (!outermostView) return; IntRect windowRect = convertToContainingWindow(rect); gtk_widget_queue_draw_area(GTK_WIDGET(containingWindow()), windowRect.x(), windowRect.y(), windowRect.width(), windowRect.height()); outermostView->addToDirtyRegion(windowRect); }
void Widget::invalidateRect(const IntRect& r) { if (data->suppressInvalidation) return; if (!parent()) { RECT rect = r; ::InvalidateRect(containingWindow(), &rect, false); if (isFrameView()) static_cast<FrameView*>(this)->addToDirtyRegion(r); return; } // Get the root widget. ScrollView* outermostView = parent(); while (outermostView && outermostView->parent()) outermostView = outermostView->parent(); if (!outermostView) return; IntRect windowRect = convertToContainingWindow(r); // Get our clip rect and intersect with it to ensure we don't invalidate too much. IntRect clipRect = windowClipRect(); windowRect.intersect(clipRect); RECT rect = windowRect; ::InvalidateRect(containingWindow(), &rect, false); outermostView->addToDirtyRegion(windowRect); }
void PluginView::invalidateRect(const IntRect& dirtyRect) { if (!parent() || !m_plugin || !m_isInitialized) return; IntRect dirtyRectInWindowCoordinates = convertToContainingWindow(dirtyRect); parent()->hostWindow()->invalidateContentsAndWindow(intersection(dirtyRectInWindowCoordinates, clipRectInWindowCoordinates()), false); }
void PlatformScrollbar::invalidate() { // Get the root widget. ScrollView* outermostView = topLevel(); if (!outermostView) return; IntRect windowRect = convertToContainingWindow(IntRect(0, 0, width(), height())); outermostView->addToDirtyRegion(windowRect); }
virtual void frameRectsChanged() { if (!graphicsWidget) return; IntRect windowRect = convertToContainingWindow(IntRect(0, 0, frameRect().width(), frameRect().height())); graphicsWidget->setGeometry(QRect(windowRect)); // FIXME: clipping of graphics widgets }
void PluginWidget::frameRectsChanged() { if (!platformWidget()) return; RefPtr<WebPlugin> plugin = static_cast<WebPlugin*>(platformWidget()); if (parent()) { IntRect windowRect = convertToContainingWindow(IntRect(0, 0, width(), height())); plugin->setGeometry(windowRect); } else plugin->setGeometry(frameRect()); }
void WebPluginContainerImpl::invalidateRect(const IntRect& rect) { if (!parent()) return; IntRect damageRect = convertToContainingWindow(rect); // Get our clip rect and intersect with it to ensure we don't invalidate // too much. IntRect clipRect = parent()->windowClipRect(); damageRect.intersect(clipRect); parent()->hostWindow()->invalidateContentsAndWindow(damageRect, false /*immediate*/); }
WebCore::IntRect WebPluginContainerImpl::windowClipRect() const { // Start by clipping to our bounds. IntRect clipRect = convertToContainingWindow(IntRect(0, 0, width(), height())); // document()->renderer() can be 0 when we receive messages from the // plugins while we are destroying a frame. if (m_element->renderer()->document()->renderer()) { // Take our element and get the clip rect from the enclosing layer and // frame view. RenderLayer* layer = m_element->renderer()->enclosingLayer(); clipRect.intersect( m_element->document()->view()->windowClipRectForLayer(layer, true)); } return clipRect; }
virtual void frameRectsChanged() { if (!platformWidget()) return; IntRect windowRect = convertToContainingWindow(IntRect(0, 0, frameRect().width(), frameRect().height())); platformWidget()->setGeometry(windowRect); ScrollView* parentScrollView = parent(); if (!parentScrollView) return; ASSERT(parentScrollView->isFrameView()); IntRect clipRect(static_cast<FrameView*>(parentScrollView)->windowClipRect()); clipRect.move(-windowRect.x(), -windowRect.y()); clipRect.intersect(platformWidget()->rect()); platformWidget()->setMask(QRegion(clipRect.x(), clipRect.y(), clipRect.width(), clipRect.height())); }
void Widget::invalidateRect(const IntRect& rect) { //printf("invalidateRect x=%d y=%d w=%d h=%d\n", rect.x(), rect.y(), rect.width(), rect.height()); if (data->suppressInvalidation) return; if (!parent()) { if (isFrameView()) static_cast<FrameView*>(this)->addToDirtyRegion(rect); return; } // Get the root widget. ScrollView* outermostView = parent(); while (outermostView && outermostView->parent()) outermostView = outermostView->parent(); if (!outermostView) return; IntRect windowRect = convertToContainingWindow(rect); outermostView->addToDirtyRegion(windowRect); }
virtual void frameRectsChanged() { if (!platformWidget()) return; IntRect windowRect = convertToContainingWindow(IntRect(0, 0, frameRect().width(), frameRect().height())); platformWidget()->setGeometry(windowRect); ScrollView* parentScrollView = parent(); if (!parentScrollView) return; ASSERT(parentScrollView->isFrameView()); IntRect clipRect(static_cast<FrameView*>(parentScrollView)->windowClipRect()); clipRect.move(-windowRect.x(), -windowRect.y()); clipRect.intersect(platformWidget()->rect()); QRegion clipRegion = QRegion(clipRect); platformWidget()->setMask(clipRegion); // if setMask is set with an empty QRegion, no clipping will // be performed, so in that case we hide the platformWidget platformWidget()->setVisible(!clipRegion.isEmpty()); }
IntRect Widget::convertToContainingWindow(const IntRect& rect) const { IntRect convertedRect = rect; convertedRect.setLocation(convertToContainingWindow(convertedRect.location())); return convertedRect; }
IntPoint ScrollView::contentsToWindow(const IntPoint& contentsPoint) const { IntPoint viewPoint = contentsPoint - scrollOffset(); return convertToContainingWindow(viewPoint); }