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); }
bool NetscapePlugin::platformPostInitialize() { if (!m_isWindowed) { m_window = 0; // Windowless plugins need a little help showing context menus since our containingWindow() // is in a different process. See <http://webkit.org/b/51063>. m_pluginModule->module()->installIATHook("user32.dll", "TrackPopupMenu", hookedTrackPopupMenu); m_contextMenuOwnerWindow = ::CreateWindowExW(0, defWndProcWindowClassName(), 0, WS_CHILD, 0, 0, 0, 0, containingWindow(), 0, instanceHandle(), 0); return true; } registerPluginView(); // Start out with the window hidden. The UI process will take care of showing it once it's correctly positioned the window. m_window = ::CreateWindowExW(0, windowClassName, 0, WS_CHILD, 0, 0, 0, 0, containingWindow(), 0, instanceHandle(), 0); if (!m_window) return false; // FIXME: Do we need to pass our window to setPlatformWidget? // FIXME: WebCore::PluginView sets the window proc to DefWindowProcA here for Shockwave Director. m_npWindow.type = NPWindowTypeWindow; m_npWindow.window = m_window; return true; }
IntPoint ScrollView::screenToContents(const IntPoint& point) const { POINT result = point; ::ScreenToClient(containingWindow(), &result); return windowToContents(result); }
IntRect ScrollView::contentsToScreen(const IntRect& rect) const { IntRect result(contentsToWindow(rect)); POINT topLeft = {0, 0}; // Find the top left corner of the Widget's containing window in screen coords, // and adjust the result rect's position by this amount. ::ClientToScreen(containingWindow(), &topLeft); result.move(topLeft.x, topLeft.y); return result; }
void ScrollView::updateContents(const IntRect& rect, bool now) { if (rect.isEmpty()) return; IntPoint windowPoint = contentsToWindow(rect.location()); IntRect containingWindowRect = rect; containingWindowRect.setLocation(windowPoint); RECT containingWindowRectWin = containingWindowRect; HWND containingWindowHandle = containingWindow(); ::InvalidateRect(containingWindowHandle, &containingWindowRectWin, false); // Cache the dirty spot. addToDirtyRegion(containingWindowRect); if (now) ::UpdateWindow(containingWindowHandle); }
void Widget::setCursor(const Cursor& cursor) { GdkCursor* pcur = cursor.impl(); if (!pcur) return; gdk_window_set_cursor(data->gdkDrawable() ? GDK_WINDOW(data->gdkDrawable()) : GTK_WIDGET(containingWindow())->window, pcur); }
void Widget::setFocus() { gtk_widget_grab_focus(gtkWidget() ? gtkWidget() : GTK_WIDGET(containingWindow())); }
void ScrollView::addChild(Widget* child) { child->setParent(this); child->setContainingWindow(containingWindow()); m_data->m_children.add(child); }
void ScrollView::update() { ::UpdateWindow(containingWindow()); }