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

Side by Side Diff: ui/base/win/hidden_window.cc

Issue 10832011: Makes NativeViewHostWin change the parent of the hwnd when (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix focus issues Created 8 years, 4 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 | « ui/base/win/hidden_window.h ('k') | ui/ui.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "ui/base/win/hidden_window.h"
6
7 #include "ui/base/win/window_impl.h"
8
9 namespace ui {
10
11 namespace {
12
13 // We need to have a parent window for the compositing code to work correctly.
14 //
15 // A tab will not have a parent HWND whenever it is not active in its
16 // host window - for example at creation time and when it's in the
17 // background, so we provide a default widget to host them.
18 //
19 // It may be tempting to use GetDesktopWindow() instead, but this is
20 // problematic as the shell sends messages to children of the desktop
21 // window that interact poorly with us.
22 //
23 // See: http://crbug.com/16476
24 class TempParent : public ui::WindowImpl {
25 public:
26 static TempParent* Get() {
27 static TempParent* g_temp_parent;
28 if (!g_temp_parent) {
29 g_temp_parent = new TempParent();
30
31 g_temp_parent->set_window_style(WS_POPUP);
32 g_temp_parent->set_window_ex_style(WS_EX_TOOLWINDOW);
33 g_temp_parent->Init(GetDesktopWindow(), gfx::Rect());
34 EnableWindow(g_temp_parent->hwnd(), FALSE);
35 }
36 return g_temp_parent;
37 }
38
39 private:
40 // Explicitly do nothing in Close. We do this as some external apps may get a
41 // handle to this window and attempt to close it.
42 void OnClose() {
43 }
44
45 BEGIN_MSG_MAP_EX(WebContentsViewWin)
46 MSG_WM_CLOSE(OnClose)
47 END_MSG_MAP()
48 };
49
50 } // namespace
51
52 HWND GetHiddenWindow() {
53 return TempParent::Get()->hwnd();
54 }
55
56 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/win/hidden_window.h ('k') | ui/ui.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698