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

Side by Side Diff: views/widget/root_view_win.cc

Issue 2862025: Canvas refactoring part 2.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 6 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 | Annotate | Revision Log
« no previous file with comments | « views/drag_utils.cc ('k') | views/widget/widget_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "views/widget/root_view.h" 5 #include "views/widget/root_view.h"
6 6
7 #include "app/drag_drop_types.h" 7 #include "app/drag_drop_types.h"
8 #include "app/os_exchange_data.h" 8 #include "app/os_exchange_data.h"
9 #include "app/os_exchange_data_provider_win.h" 9 #include "app/os_exchange_data_provider_win.h"
10 #include "base/base_drag_source.h" 10 #include "base/base_drag_source.h"
11 #include "base/logging.h" 11 #include "base/logging.h"
12 #include "gfx/canvas_paint.h" 12 #include "gfx/canvas_2.h"
13 #include "gfx/canvas_skia.h"
13 14
14 namespace views { 15 namespace views {
15 16
16 void RootView::OnPaint(HWND hwnd) { 17 void RootView::OnPaint(HWND hwnd) {
17 gfx::Rect original_dirty_region = GetScheduledPaintRectConstrainedToSize(); 18 gfx::Rect original_dirty_region = GetScheduledPaintRectConstrainedToSize();
18 if (!original_dirty_region.IsEmpty()) { 19 if (!original_dirty_region.IsEmpty()) {
19 // Invoke InvalidateRect so that the dirty region of the window includes the 20 // Invoke InvalidateRect so that the dirty region of the window includes the
20 // region we need to paint. If we didn't do this and the region didn't 21 // region we need to paint. If we didn't do this and the region didn't
21 // include the dirty region, ProcessPaint would incorrectly mark everything 22 // include the dirty region, ProcessPaint would incorrectly mark everything
22 // as clean. This can happen if a WM_PAINT is generated by the system before 23 // as clean. This can happen if a WM_PAINT is generated by the system before
23 // the InvokeLater schedule by RootView is processed. 24 // the InvokeLater schedule by RootView is processed.
24 RECT win_version = original_dirty_region.ToRECT(); 25 RECT win_version = original_dirty_region.ToRECT();
25 InvalidateRect(hwnd, &win_version, FALSE); 26 InvalidateRect(hwnd, &win_version, FALSE);
26 } 27 }
27 scoped_ptr<gfx::CanvasPaint2> canvas( 28 scoped_ptr<gfx::CanvasPaint2> canvas(
28 gfx::CanvasPaint2::CreateCanvasPaint(hwnd)); 29 gfx::CanvasPaint2::CreateCanvasPaint(hwnd));
29 if (!canvas->IsValid()) { 30 if (!canvas->IsValid()) {
30 SchedulePaint(canvas->GetInvalidRect(), false); 31 SchedulePaint(canvas->GetInvalidRect(), false);
31 if (NeedsPainting(false)) 32 if (NeedsPainting(false))
32 ProcessPaint(canvas->AsCanvas2()->AsCanvas()); 33 ProcessPaint(canvas->AsCanvas2()->AsCanvasSkia()->AsCanvas());
33 } 34 }
34 } 35 }
35 36
36 void RootView::StartDragForViewFromMouseEvent( 37 void RootView::StartDragForViewFromMouseEvent(
37 View* view, 38 View* view,
38 const OSExchangeData& data, 39 const OSExchangeData& data,
39 int operation) { 40 int operation) {
40 // NOTE: view may be null. 41 // NOTE: view may be null.
41 drag_view_ = view; 42 drag_view_ = view;
42 scoped_refptr<BaseDragSource> drag_source(new BaseDragSource); 43 scoped_refptr<BaseDragSource> drag_source(new BaseDragSource);
43 DWORD effects; 44 DWORD effects;
44 DoDragDrop(OSExchangeDataProviderWin::GetIDataObject(data), drag_source, 45 DoDragDrop(OSExchangeDataProviderWin::GetIDataObject(data), drag_source,
45 DragDropTypes::DragOperationToDropEffect(operation), &effects); 46 DragDropTypes::DragOperationToDropEffect(operation), &effects);
46 // If the view is removed during the drag operation, drag_view_ is set to 47 // If the view is removed during the drag operation, drag_view_ is set to
47 // NULL. 48 // NULL.
48 if (view && drag_view_ == view) { 49 if (view && drag_view_ == view) {
49 View* drag_view = drag_view_; 50 View* drag_view = drag_view_;
50 drag_view_ = NULL; 51 drag_view_ = NULL;
51 drag_view->OnDragDone(); 52 drag_view->OnDragDone();
52 } 53 }
53 } 54 }
54 55
55 } 56 }
OLDNEW
« no previous file with comments | « views/drag_utils.cc ('k') | views/widget/widget_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698