| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "chrome/browser/ui/views/color_chooser_dialog.h" | 5 #include "chrome/browser/ui/views/color_chooser_dialog.h" |
| 6 | 6 |
| 7 #include <commdlg.h> | 7 #include <commdlg.h> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| 11 #include "base/message_loop/message_loop.h" | 11 #include "base/message_loop/message_loop.h" |
| 12 #include "base/single_thread_task_runner.h" |
| 12 #include "base/threading/thread.h" | 13 #include "base/threading/thread.h" |
| 13 #include "content/public/browser/browser_thread.h" | 14 #include "content/public/browser/browser_thread.h" |
| 14 #include "skia/ext/skia_utils_win.h" | 15 #include "skia/ext/skia_utils_win.h" |
| 15 #include "ui/views/color_chooser/color_chooser_listener.h" | 16 #include "ui/views/color_chooser/color_chooser_listener.h" |
| 16 #include "ui/views/win/hwnd_util.h" | 17 #include "ui/views/win/hwnd_util.h" |
| 17 | 18 |
| 18 using content::BrowserThread; | 19 using content::BrowserThread; |
| 19 | 20 |
| 20 // static | 21 // static |
| 21 COLORREF ColorChooserDialog::g_custom_colors[16]; | 22 COLORREF ColorChooserDialog::g_custom_colors[16]; |
| 22 | 23 |
| 23 ColorChooserDialog::ExecuteOpenParams::ExecuteOpenParams(SkColor color, | 24 ColorChooserDialog::ExecuteOpenParams::ExecuteOpenParams(SkColor color, |
| 24 RunState run_state, | 25 RunState run_state, |
| 25 HWND owner) | 26 HWND owner) |
| 26 : color(color), | 27 : color(color), |
| 27 run_state(run_state), | 28 run_state(run_state), |
| 28 owner(owner) { | 29 owner(owner) { |
| 29 } | 30 } |
| 30 | 31 |
| 31 ColorChooserDialog::ColorChooserDialog(views::ColorChooserListener* listener, | 32 ColorChooserDialog::ColorChooserDialog(views::ColorChooserListener* listener, |
| 32 SkColor initial_color, | 33 SkColor initial_color, |
| 33 gfx::NativeWindow owning_window) | 34 gfx::NativeWindow owning_window) |
| 34 : listener_(listener) { | 35 : listener_(listener) { |
| 35 DCHECK(listener_); | 36 DCHECK(listener_); |
| 36 CopyCustomColors(g_custom_colors, custom_colors_); | 37 CopyCustomColors(g_custom_colors, custom_colors_); |
| 37 HWND owning_hwnd = views::HWNDForNativeWindow(owning_window); | 38 HWND owning_hwnd = views::HWNDForNativeWindow(owning_window); |
| 38 ExecuteOpenParams execute_params(initial_color, BeginRun(owning_hwnd), | 39 ExecuteOpenParams execute_params(initial_color, BeginRun(owning_hwnd), |
| 39 owning_hwnd); | 40 owning_hwnd); |
| 40 execute_params.run_state.dialog_thread->message_loop()->PostTask(FROM_HERE, | 41 execute_params.run_state.dialog_thread->task_runner()->PostTask( |
| 42 FROM_HERE, |
| 41 base::Bind(&ColorChooserDialog::ExecuteOpen, this, execute_params)); | 43 base::Bind(&ColorChooserDialog::ExecuteOpen, this, execute_params)); |
| 42 } | 44 } |
| 43 | 45 |
| 44 bool ColorChooserDialog::IsRunning(gfx::NativeWindow owning_window) const { | 46 bool ColorChooserDialog::IsRunning(gfx::NativeWindow owning_window) const { |
| 45 return listener_ && IsRunningDialogForOwner( | 47 return listener_ && IsRunningDialogForOwner( |
| 46 views::HWNDForNativeWindow(owning_window)); | 48 views::HWNDForNativeWindow(owning_window)); |
| 47 } | 49 } |
| 48 | 50 |
| 49 void ColorChooserDialog::ListenerDestroyed() { | 51 void ColorChooserDialog::ListenerDestroyed() { |
| 50 // Our associated listener has gone away, so we shouldn't call back to it if | 52 // Our associated listener has gone away, so we shouldn't call back to it if |
| (...skipping 26 matching lines...) Expand all Loading... |
| 77 if (listener_) { | 79 if (listener_) { |
| 78 if (chose_color) | 80 if (chose_color) |
| 79 listener_->OnColorChosen(color); | 81 listener_->OnColorChosen(color); |
| 80 listener_->OnColorChooserDialogClosed(); | 82 listener_->OnColorChooserDialogClosed(); |
| 81 } | 83 } |
| 82 } | 84 } |
| 83 | 85 |
| 84 void ColorChooserDialog::CopyCustomColors(COLORREF* src, COLORREF* dst) { | 86 void ColorChooserDialog::CopyCustomColors(COLORREF* src, COLORREF* dst) { |
| 85 memcpy(dst, src, sizeof(COLORREF) * arraysize(g_custom_colors)); | 87 memcpy(dst, src, sizeof(COLORREF) * arraysize(g_custom_colors)); |
| 86 } | 88 } |
| OLD | NEW |