| Index: webkit/glue/webframe_impl.cc
|
| diff --git a/webkit/glue/webframe_impl.cc b/webkit/glue/webframe_impl.cc
|
| index fd3ceb1cc70753c5ace474497e562d60bacbf3cd..accc174bb0ac904c4c1ab03a7c0bc0562700d9a0 100644
|
| --- a/webkit/glue/webframe_impl.cc
|
| +++ b/webkit/glue/webframe_impl.cc
|
| @@ -147,6 +147,10 @@
|
| #include "webkit/port/page/ChromeClientWin.h"
|
| #include "webkit/port/platform/WidgetClientWin.h"
|
|
|
| +#if defined(OS_LINUX)
|
| +#include <gdk/gdk.h>
|
| +#endif
|
| +
|
| using WebCore::ChromeClientWin;
|
| using WebCore::Color;
|
| using WebCore::Document;
|
| @@ -244,7 +248,6 @@ static void FrameContentAsPlainText(int max_chars, Frame* frame,
|
|
|
| // Recursively walk the children.
|
| FrameTree* frame_tree = frame->tree();
|
| - Frame* cur_child = frame_tree->firstChild();
|
| for (Frame* cur_child = frame_tree->firstChild(); cur_child;
|
| cur_child = cur_child->tree()->nextSibling()) {
|
| // Make sure the frame separator won't fill up the buffer, and give up if
|
| @@ -277,13 +280,13 @@ MSVC_POP_WARNING()
|
| allows_scrolling_(true),
|
| margin_width_(-1),
|
| margin_height_(-1),
|
| - last_match_count_(-1),
|
| - total_matchcount_(-1),
|
| inspected_node_(NULL),
|
| active_tickmark_frame_(NULL),
|
| active_tickmark_(WidgetClientWin::kNoTickmark),
|
| locating_active_rect_(false),
|
| last_active_range_(NULL),
|
| + last_match_count_(-1),
|
| + total_matchcount_(-1),
|
| frames_scoping_count_(-1),
|
| scoping_complete_(false),
|
| next_invalidate_after_(0),
|
| @@ -723,10 +726,10 @@ void WebFrameImpl::GetContentAsPlainText(int max_chars,
|
|
|
| void WebFrameImpl::InvalidateArea(AreaToInvalidate area) {
|
| ASSERT(frame() && frame()->view());
|
| - FrameView* view = frame()->view();
|
| -
|
| #if defined(OS_WIN)
|
| // TODO(pinkerton): Fix Mac invalidation to be more like Win ScrollView
|
| + FrameView* view = frame()->view();
|
| +
|
| if ((area & INVALIDATE_ALL) == INVALIDATE_ALL) {
|
| view->addToDirtyRegion(view->frameGeometry());
|
| } else {
|
| @@ -752,10 +755,10 @@ void WebFrameImpl::InvalidateArea(AreaToInvalidate area) {
|
|
|
| void WebFrameImpl::InvalidateTickmark(RefPtr<WebCore::Range> tickmark) {
|
| ASSERT(frame() && frame()->view());
|
| - FrameView* view = frame()->view();
|
| -
|
| #if defined(OS_WIN)
|
| // TODO(pinkerton): Fix Mac invalidation to be more like Win ScrollView
|
| + FrameView* view = frame()->view();
|
| +
|
| IntRect pos = tickmark->boundingBox();
|
| pos.move(-view->contentsX(), -view->contentsY());
|
| view->addToDirtyRegion(pos);
|
| @@ -1491,6 +1494,7 @@ void WebFrameImpl::Paint(gfx::PlatformCanvas* canvas, const gfx::Rect& rect) {
|
| }
|
| }
|
|
|
| +// TODO(tc): Merge these as they are almost identical across platforms.
|
| #if defined(OS_WIN)
|
| gfx::BitmapPlatformDevice WebFrameImpl::CaptureImage(bool scroll_to_zero) {
|
| // Must layout before painting.
|
| @@ -1527,7 +1531,20 @@ gfx::BitmapPlatformDevice WebFrameImpl::CaptureImage(bool scroll_to_zero) {
|
| }
|
| #else
|
| gfx::BitmapPlatformDevice WebFrameImpl::CaptureImage(bool scroll_to_zero) {
|
| - NOTIMPLEMENTED();
|
| + // Must layout before painting.
|
| + Layout();
|
| +
|
| + gfx::PlatformCanvasLinux canvas(frameview()->width(), frameview()->height(),
|
| + true);
|
| + PlatformContextSkia context(&canvas);
|
| +
|
| + GraphicsContext gc(reinterpret_cast<PlatformGraphicsContext*>(&context));
|
| + frameview()->paint(&gc, IntRect(0, 0, frameview()->width(),
|
| + frameview()->height()));
|
| +
|
| + gfx::BitmapPlatformDevice& device =
|
| + static_cast<gfx::BitmapPlatformDevice&>(canvas.getTopPlatformDevice());
|
| + return device;
|
| }
|
| #endif
|
|
|
|
|