Changeset 96339 in webkit
- Timestamp:
- Sep 29, 2011 10:35:41 AM (13 years ago)
- Location:
- trunk/Source/WebCore
- Files:
-
- 5 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/CMakeListsEfl.txt
r95998 r96339 21 21 page/efl/DragControllerEfl.cpp 22 22 page/efl/EventHandlerEfl.cpp 23 page/efl/FrameEfl.cpp24 23 platform/Cursor.cpp 25 24 platform/efl/ClipboardEfl.cpp -
trunk/Source/WebCore/ChangeLog
r96338 r96339 1 2011-09-29 Martin Robinson <mrobinson@igalia.com> 2 3 [GTK] Dragging a selection does not produce a drag image 4 https://bugs.webkit.org/show_bug.cgi?id=69064 5 6 Reviewed by Andreas Kling. 7 8 Moved Chromium's generic implementation of Frame::nodeImage and 9 Frame::dragImageForSeletion to Frame.cpp and simply excluded via 10 #ifdefs platforms that do not have their own implementation. Removed 11 all empty implementations of these functions and Qt's which was 12 functionally identical. 13 14 No new tests. Drag-and-drop drag image functionality changes 15 are incredibly difficult to test in a non-manual way. 16 17 * CMakeListsEfl.txt: Delist FrameEfl.cpp. 18 * GNUmakefile.list.am: Delist FrameGtk.cpp. 19 * WebCore.gypi: Delist removed Frame*.cpp. 20 * WebCore.pro: Delist FrameQt.cpp. 21 * page/Frame.cpp: Moved FrameChromium implementation here. 22 (WebCore::ScopedFramePaintingState::ScopedFramePaintingState): 23 (WebCore::ScopedFramePaintingState::~ScopedFramePaintingState): 24 (WebCore::Frame::nodeImage): 25 (WebCore::Frame::dragImageForSelection): 26 * page/chromium/FrameChromium.cpp: Removed. 27 * page/efl/FrameEfl.cpp: Removed. 28 * page/gtk/FrameGtk.cpp: Removed. 29 * page/qt/FrameQt.cpp: Removed. 30 * page/wx/FrameWx.cpp: Removed. 31 * platform/gtk/ClipboardGtk.cpp: 32 (WebCore::ClipboardGtk::createDragImage): Call nodeImage to get 33 the drag image for a node. 34 1 35 2011-09-29 Noel Gordon <noel.gordon@gmail.com> 2 36 -
trunk/Source/WebCore/GNUmakefile.list.am
r96299 r96339 3955 3955 Source/WebCore/page/gtk/DragControllerGtk.cpp \ 3956 3956 Source/WebCore/page/gtk/EventHandlerGtk.cpp \ 3957 Source/WebCore/page/gtk/FrameGtk.cpp \3958 3957 Source/WebCore/platform/cairo/WidgetBackingStore.h \ 3959 3958 Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp \ -
trunk/Source/WebCore/WebCore.gypi
r96313 r96339 2968 2968 'page/chromium/DragControllerChromium.cpp', 2969 2969 'page/chromium/EventHandlerChromium.cpp', 2970 'page/chromium/FrameChromium.cpp',2971 2970 'page/efl/DragControllerEfl.cpp', 2972 2971 'page/efl/EventHandlerEfl.cpp', 2973 'page/efl/FrameEfl.cpp',2974 2972 'page/gtk/DragControllerGtk.cpp', 2975 2973 'page/gtk/EventHandlerGtk.cpp', 2976 'page/gtk/FrameGtk.cpp',2977 2974 'page/mac/ChromeMac.mm', 2978 2975 'page/mac/DragControllerMac.mm', … … 2982 2979 'page/qt/DragControllerQt.cpp', 2983 2980 'page/qt/EventHandlerQt.cpp', 2984 'page/qt/FrameQt.cpp',2985 2981 'page/win/DragControllerWin.cpp', 2986 2982 'page/win/EventHandlerWin.cpp', … … 2992 2988 'page/wx/DragControllerWx.cpp', 2993 2989 'page/wx/EventHandlerWx.cpp', 2994 'page/wx/FrameWx.cpp',2995 2990 'platform/Arena.cpp', 2996 2991 'platform/Arena.h', -
trunk/Source/WebCore/WebCore.pro
r96215 r96339 2583 2583 page/qt/DragControllerQt.cpp \ 2584 2584 page/qt/EventHandlerQt.cpp \ 2585 page/qt/FrameQt.cpp \2586 2585 platform/graphics/qt/TransformationMatrixQt.cpp \ 2587 2586 platform/graphics/qt/ColorQt.cpp \ -
trunk/Source/WebCore/page/Frame.cpp
r95715 r96339 10 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 11 11 * Copyright (C) 2008 Eric Seidel <eric@webkit.org> 12 * Copyright (C) 2008 Google Inc. 12 13 * 13 14 * This library is free software; you can redistribute it and/or … … 59 60 #include "HTMLTableCellElement.h" 60 61 #include "HitTestResult.h" 62 #include "ImageBuffer.h" 61 63 #include "InspectorInstrumentation.h" 62 64 #include "Logging.h" … … 1059 1061 } 1060 1062 1063 #if !PLATFORM(MAC) && !PLATFORM(WIN) && !PLATFORM(WX) 1064 struct ScopedFramePaintingState { 1065 ScopedFramePaintingState(Frame* theFrame, RenderObject* theRenderer) 1066 : frame(theFrame) 1067 , renderer(theRenderer) 1068 , paintBehavior(frame->view()->paintBehavior()) 1069 , backgroundColor(frame->view()->baseBackgroundColor()) 1070 { 1071 } 1072 1073 ~ScopedFramePaintingState() 1074 { 1075 if (renderer) 1076 renderer->updateDragState(false); 1077 frame->view()->setPaintBehavior(paintBehavior); 1078 frame->view()->setBaseBackgroundColor(backgroundColor); 1079 frame->view()->setNodeToDraw(0); 1080 } 1081 1082 Frame* frame; 1083 RenderObject* renderer; 1084 PaintBehavior paintBehavior; 1085 Color backgroundColor; 1086 }; 1087 1088 DragImageRef Frame::nodeImage(Node* node) 1089 { 1090 RenderObject* renderer = node->renderer(); 1091 if (!renderer) 1092 return 0; 1093 1094 const ScopedFramePaintingState state(this, renderer); 1095 1096 renderer->updateDragState(true); 1097 m_view->setPaintBehavior(state.paintBehavior | PaintBehaviorFlattenCompositingLayers); 1098 1099 // When generating the drag image for an element, ignore the document background. 1100 m_view->setBaseBackgroundColor(colorWithOverrideAlpha(Color::white, 1.0)); 1101 m_doc->updateLayout(); 1102 m_view->setNodeToDraw(node); // Enable special sub-tree drawing mode. 1103 1104 IntRect topLevelRect; 1105 IntRect paintingRect = renderer->paintingRootRect(topLevelRect); 1106 1107 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size())); 1108 if (!buffer) 1109 return 0; 1110 buffer->context()->translate(-paintingRect.x(), -paintingRect.y()); 1111 buffer->context()->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.maxY())); 1112 1113 m_view->paintContents(buffer->context(), paintingRect); 1114 1115 RefPtr<Image> image = buffer->copyImage(); 1116 return createDragImageFromImage(image.get()); 1117 } 1118 1119 DragImageRef Frame::dragImageForSelection() 1120 { 1121 if (!selection()->isRange()) 1122 return 0; 1123 1124 const ScopedFramePaintingState state(this, 0); 1125 m_view->setPaintBehavior(PaintBehaviorSelectionOnly); 1126 m_doc->updateLayout(); 1127 1128 IntRect paintingRect = enclosingIntRect(selection()->bounds()); 1129 1130 OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size())); 1131 if (!buffer) 1132 return 0; 1133 buffer->context()->translate(-paintingRect.x(), -paintingRect.y()); 1134 buffer->context()->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.maxY())); 1135 1136 m_view->paintContents(buffer->context(), paintingRect); 1137 1138 RefPtr<Image> image = buffer->copyImage(); 1139 return createDragImageFromImage(image.get()); 1140 } 1141 1142 #endif 1143 1061 1144 } // namespace WebCore -
trunk/Source/WebCore/platform/gtk/ClipboardGtk.cpp
r92769 r96339 260 260 { 261 261 location = m_dragLoc; 262 if (!m_dragImage) 263 return 0; 264 265 return createDragImageFromImage(m_dragImage->image()); 262 263 if (m_dragImage) 264 return createDragImageFromImage(m_dragImage->image()); 265 if (m_dragImageElement && m_frame) 266 return m_frame->nodeImage(m_dragImageElement.get()); 267 268 return 0; // We do not have enough information to create a drag image, use the default icon. 266 269 } 267 270
Note: See TracChangeset
for help on using the changeset viewer.