Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(98)

Side by Side Diff: Source/WebCore/page/Frame.cpp

Issue 10763005: Merge 121388 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1132/
Patch Set: Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org>
3 * 1999 Lars Knoll <knoll@kde.org> 3 * 1999 Lars Knoll <knoll@kde.org>
4 * 1999 Antti Koivisto <koivisto@kde.org> 4 * 1999 Antti Koivisto <koivisto@kde.org>
5 * 2000 Simon Hausmann <hausmann@kde.org> 5 * 2000 Simon Hausmann <hausmann@kde.org>
6 * 2000 Stefan Schimanski <1Stein@gmx.de> 6 * 2000 Stefan Schimanski <1Stein@gmx.de>
7 * 2001 George Staikos <staikos@kde.org> 7 * 2001 George Staikos <staikos@kde.org>
8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved. 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r ights reserved.
9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com>
10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
(...skipping 1031 matching lines...) Expand 10 before | Expand all | Expand 10 after
1042 for (const Frame* frame = this; frame; frame = frame->tree()->traverseNext() ) { 1042 for (const Frame* frame = this; frame; frame = frame->tree()->traverseNext() ) {
1043 if (frame->document()) 1043 if (frame->document())
1044 count += frame->document()->touchEventHandlerCount(); 1044 count += frame->document()->touchEventHandlerCount();
1045 } 1045 }
1046 1046
1047 m_page->chrome()->client()->numTouchEventHandlersChanged(count); 1047 m_page->chrome()->client()->numTouchEventHandlersChanged(count);
1048 } 1048 }
1049 1049
1050 #if !PLATFORM(MAC) && !PLATFORM(WIN) 1050 #if !PLATFORM(MAC) && !PLATFORM(WIN)
1051 struct ScopedFramePaintingState { 1051 struct ScopedFramePaintingState {
1052 ScopedFramePaintingState(Frame* theFrame, RenderObject* theRenderer) 1052 ScopedFramePaintingState(Frame* frame, Node* node)
1053 : frame(theFrame) 1053 : frame(frame)
1054 , renderer(theRenderer) 1054 , node(node)
1055 , paintBehavior(frame->view()->paintBehavior()) 1055 , paintBehavior(frame->view()->paintBehavior())
1056 , backgroundColor(frame->view()->baseBackgroundColor()) 1056 , backgroundColor(frame->view()->baseBackgroundColor())
1057 { 1057 {
1058 ASSERT(!node || node->renderer());
1059 if (node)
1060 node->renderer()->updateDragState(true);
1058 } 1061 }
1059 1062
1060 ~ScopedFramePaintingState() 1063 ~ScopedFramePaintingState()
1061 { 1064 {
1062 if (renderer) 1065 if (node && node->renderer())
1063 renderer->updateDragState(false); 1066 node->renderer()->updateDragState(false);
1064 frame->view()->setPaintBehavior(paintBehavior); 1067 frame->view()->setPaintBehavior(paintBehavior);
1065 frame->view()->setBaseBackgroundColor(backgroundColor); 1068 frame->view()->setBaseBackgroundColor(backgroundColor);
1066 frame->view()->setNodeToDraw(0); 1069 frame->view()->setNodeToDraw(0);
1067 } 1070 }
1068 1071
1069 Frame* frame; 1072 Frame* frame;
1070 RenderObject* renderer; 1073 Node* node;
1071 PaintBehavior paintBehavior; 1074 PaintBehavior paintBehavior;
1072 Color backgroundColor; 1075 Color backgroundColor;
1073 }; 1076 };
1074 1077
1075 DragImageRef Frame::nodeImage(Node* node) 1078 DragImageRef Frame::nodeImage(Node* node)
1076 { 1079 {
1077 RenderObject* renderer = node->renderer(); 1080 if (!node->renderer())
1078 if (!renderer)
1079 return 0; 1081 return 0;
1080 1082
1081 const ScopedFramePaintingState state(this, renderer); 1083 const ScopedFramePaintingState state(this, node);
1082 1084
1083 renderer->updateDragState(true);
1084 m_view->setPaintBehavior(state.paintBehavior | PaintBehaviorFlattenCompositi ngLayers); 1085 m_view->setPaintBehavior(state.paintBehavior | PaintBehaviorFlattenCompositi ngLayers);
1085 1086
1086 // When generating the drag image for an element, ignore the document backgr ound. 1087 // When generating the drag image for an element, ignore the document backgr ound.
1087 m_view->setBaseBackgroundColor(colorWithOverrideAlpha(Color::white, 1.0)); 1088 m_view->setBaseBackgroundColor(colorWithOverrideAlpha(Color::white, 1.0));
1088 m_doc->updateLayout(); 1089 m_doc->updateLayout();
1089 m_view->setNodeToDraw(node); // Enable special sub-tree drawing mode. 1090 m_view->setNodeToDraw(node); // Enable special sub-tree drawing mode.
1090 1091
1092 // Document::updateLayout may have blown away the original RenderObject.
1093 RenderObject* renderer = node->renderer();
1094 if (!renderer)
1095 return 0;
1096
1091 LayoutRect topLevelRect; 1097 LayoutRect topLevelRect;
1092 IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLev elRect)); 1098 IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLev elRect));
1093 1099
1094 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), 1, Color SpaceDeviceRGB)); 1100 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), 1, Color SpaceDeviceRGB));
1095 if (!buffer) 1101 if (!buffer)
1096 return 0; 1102 return 0;
1097 buffer->context()->translate(-paintingRect.x(), -paintingRect.y()); 1103 buffer->context()->translate(-paintingRect.x(), -paintingRect.y());
1098 buffer->context()->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.ma xY())); 1104 buffer->context()->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.ma xY()));
1099 1105
1100 m_view->paintContents(buffer->context(), paintingRect); 1106 m_view->paintContents(buffer->context(), paintingRect);
(...skipping 21 matching lines...) Expand all
1122 1128
1123 m_view->paintContents(buffer->context(), paintingRect); 1129 m_view->paintContents(buffer->context(), paintingRect);
1124 1130
1125 RefPtr<Image> image = buffer->copyImage(); 1131 RefPtr<Image> image = buffer->copyImage();
1126 return createDragImageFromImage(image.get()); 1132 return createDragImageFromImage(image.get());
1127 } 1133 }
1128 1134
1129 #endif 1135 #endif
1130 1136
1131 } // namespace WebCore 1137 } // namespace WebCore
OLDNEW
« no previous file with comments | « LayoutTests/fast/events/drag-display-none-element-expected.txt ('k') | Source/WebCore/page/mac/FrameMac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698