| Index: base/clipboard_win.cc
|
| ===================================================================
|
| --- base/clipboard_win.cc (revision 5863)
|
| +++ base/clipboard_win.cc (working copy)
|
| @@ -131,15 +131,12 @@
|
| wcex.lpszClassName = L"ClipboardOwnerWindowClass";
|
| ::RegisterClassEx(&wcex);
|
|
|
| - clipboard_owner_ = ::CreateWindow(L"ClipboardOwnerWindowClass",
|
| - L"ClipboardOwnerWindow",
|
| - 0, 0, 0, 0, 0,
|
| - HWND_MESSAGE,
|
| - 0, 0, 0);
|
| + clipboard_owner_ = NULL;
|
| }
|
|
|
| Clipboard::~Clipboard() {
|
| - ::DestroyWindow(clipboard_owner_);
|
| + if (clipboard_owner_)
|
| + ::DestroyWindow(clipboard_owner_);
|
| clipboard_owner_ = NULL;
|
| }
|
|
|
| @@ -150,7 +147,7 @@
|
| void Clipboard::WriteObjects(const ObjectMap& objects,
|
| base::ProcessHandle process) {
|
| ScopedClipboard clipboard;
|
| - if (!clipboard.Acquire(clipboard_owner_))
|
| + if (!clipboard.Acquire(GetClipboardWindow()))
|
| return;
|
|
|
| ::EmptyClipboard();
|
| @@ -385,7 +382,7 @@
|
|
|
| // Acquire the clipboard.
|
| ScopedClipboard clipboard;
|
| - if (!clipboard.Acquire(clipboard_owner_))
|
| + if (!clipboard.Acquire(GetClipboardWindow()))
|
| return;
|
|
|
| HANDLE data = ::GetClipboardData(CF_UNICODETEXT);
|
| @@ -406,7 +403,7 @@
|
|
|
| // Acquire the clipboard.
|
| ScopedClipboard clipboard;
|
| - if (!clipboard.Acquire(clipboard_owner_))
|
| + if (!clipboard.Acquire(GetClipboardWindow()))
|
| return;
|
|
|
| HANDLE data = ::GetClipboardData(CF_TEXT);
|
| @@ -426,7 +423,7 @@
|
|
|
| // Acquire the clipboard.
|
| ScopedClipboard clipboard;
|
| - if (!clipboard.Acquire(clipboard_owner_))
|
| + if (!clipboard.Acquire(GetClipboardWindow()))
|
| return;
|
|
|
| HANDLE data = ::GetClipboardData(GetHtmlFormatType());
|
| @@ -450,7 +447,7 @@
|
|
|
| // Acquire the clipboard.
|
| ScopedClipboard clipboard;
|
| - if (!clipboard.Acquire(clipboard_owner_))
|
| + if (!clipboard.Acquire(GetClipboardWindow()))
|
| return;
|
|
|
| HANDLE data = ::GetClipboardData(GetUrlWFormatType());
|
| @@ -489,7 +486,7 @@
|
| files->clear();
|
|
|
| ScopedClipboard clipboard;
|
| - if (!clipboard.Acquire(clipboard_owner_))
|
| + if (!clipboard.Acquire(GetClipboardWindow()))
|
| return;
|
|
|
| HDROP drop = static_cast<HDROP>(::GetClipboardData(CF_HDROP));
|
| @@ -605,3 +602,14 @@
|
| else
|
| ::GlobalFree(data);
|
| }
|
| +
|
| +HWND Clipboard::GetClipboardWindow() const {
|
| + if (!clipboard_owner_) {
|
| + clipboard_owner_ = ::CreateWindow(L"ClipboardOwnerWindowClass",
|
| + L"ClipboardOwnerWindow",
|
| + 0, 0, 0, 0, 0,
|
| + HWND_MESSAGE,
|
| + 0, 0, 0);
|
| + }
|
| + return clipboard_owner_;
|
| +}
|
|
|