| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |