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

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

Issue 10756010: Merge 121388 (Closed) Base URL: http://svn.webkit.org/repository/webkit/branches/chromium/1180/
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 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after
1040 for (const Frame* frame = this; frame; frame = frame->tree()->traverseNext() ) { 1040 for (const Frame* frame = this; frame; frame = frame->tree()->traverseNext() ) {
1041 if (frame->document()) 1041 if (frame->document())
1042 count += frame->document()->touchEventHandlerCount(); 1042 count += frame->document()->touchEventHandlerCount();
1043 } 1043 }
1044 1044
1045 m_page->chrome()->client()->numTouchEventHandlersChanged(count); 1045 m_page->chrome()->client()->numTouchEventHandlersChanged(count);
1046 } 1046 }
1047 1047
1048 #if !PLATFORM(MAC) && !PLATFORM(WIN) 1048 #if !PLATFORM(MAC) && !PLATFORM(WIN)
1049 struct ScopedFramePaintingState { 1049 struct ScopedFramePaintingState {
1050 ScopedFramePaintingState(Frame* theFrame, RenderObject* theRenderer) 1050 ScopedFramePaintingState(Frame* frame, Node* node)
1051 : frame(theFrame) 1051 : frame(frame)
1052 , renderer(theRenderer) 1052 , node(node)
1053 , paintBehavior(frame->view()->paintBehavior()) 1053 , paintBehavior(frame->view()->paintBehavior())
1054 , backgroundColor(frame->view()->baseBackgroundColor()) 1054 , backgroundColor(frame->view()->baseBackgroundColor())
1055 { 1055 {
1056 ASSERT(!node || node->renderer());
1057 if (node)
1058 node->renderer()->updateDragState(true);
1056 } 1059 }
1057 1060
1058 ~ScopedFramePaintingState() 1061 ~ScopedFramePaintingState()
1059 { 1062 {
1060 if (renderer) 1063 if (node && node->renderer())
1061 renderer->updateDragState(false); 1064 node->renderer()->updateDragState(false);
1062 frame->view()->setPaintBehavior(paintBehavior); 1065 frame->view()->setPaintBehavior(paintBehavior);
1063 frame->view()->setBaseBackgroundColor(backgroundColor); 1066 frame->view()->setBaseBackgroundColor(backgroundColor);
1064 frame->view()->setNodeToDraw(0); 1067 frame->view()->setNodeToDraw(0);
1065 } 1068 }
1066 1069
1067 Frame* frame; 1070 Frame* frame;
1068 RenderObject* renderer; 1071 Node* node;
1069 PaintBehavior paintBehavior; 1072 PaintBehavior paintBehavior;
1070 Color backgroundColor; 1073 Color backgroundColor;
1071 }; 1074 };
1072 1075
1073 DragImageRef Frame::nodeImage(Node* node) 1076 DragImageRef Frame::nodeImage(Node* node)
1074 { 1077 {
1075 RenderObject* renderer = node->renderer(); 1078 if (!node->renderer())
1076 if (!renderer)
1077 return 0; 1079 return 0;
1078 1080
1079 const ScopedFramePaintingState state(this, renderer); 1081 const ScopedFramePaintingState state(this, node);
1080 1082
1081 renderer->updateDragState(true);
1082 m_view->setPaintBehavior(state.paintBehavior | PaintBehaviorFlattenCompositi ngLayers); 1083 m_view->setPaintBehavior(state.paintBehavior | PaintBehaviorFlattenCompositi ngLayers);
1083 1084
1084 // When generating the drag image for an element, ignore the document backgr ound. 1085 // When generating the drag image for an element, ignore the document backgr ound.
1085 m_view->setBaseBackgroundColor(colorWithOverrideAlpha(Color::white, 1.0)); 1086 m_view->setBaseBackgroundColor(colorWithOverrideAlpha(Color::white, 1.0));
1086 m_doc->updateLayout(); 1087 m_doc->updateLayout();
1087 m_view->setNodeToDraw(node); // Enable special sub-tree drawing mode. 1088 m_view->setNodeToDraw(node); // Enable special sub-tree drawing mode.
1088 1089
1090 // Document::updateLayout may have blown away the original RenderObject.
1091 RenderObject* renderer = node->renderer();
1092 if (!renderer)
1093 return 0;
1094
1089 LayoutRect topLevelRect; 1095 LayoutRect topLevelRect;
1090 IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLev elRect)); 1096 IntRect paintingRect = pixelSnappedIntRect(renderer->paintingRootRect(topLev elRect));
1091 1097
1092 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), 1, Color SpaceDeviceRGB)); 1098 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size(), 1, Color SpaceDeviceRGB));
1093 if (!buffer) 1099 if (!buffer)
1094 return 0; 1100 return 0;
1095 buffer->context()->translate(-paintingRect.x(), -paintingRect.y()); 1101 buffer->context()->translate(-paintingRect.x(), -paintingRect.y());
1096 buffer->context()->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.ma xY())); 1102 buffer->context()->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.ma xY()));
1097 1103
1098 m_view->paintContents(buffer->context(), paintingRect); 1104 m_view->paintContents(buffer->context(), paintingRect);
(...skipping 21 matching lines...) Expand all
1120 1126
1121 m_view->paintContents(buffer->context(), paintingRect); 1127 m_view->paintContents(buffer->context(), paintingRect);
1122 1128
1123 RefPtr<Image> image = buffer->copyImage(); 1129 RefPtr<Image> image = buffer->copyImage();
1124 return createDragImageFromImage(image.get()); 1130 return createDragImageFromImage(image.get());
1125 } 1131 }
1126 1132
1127 #endif 1133 #endif
1128 1134
1129 } // namespace WebCore 1135 } // 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