OLD | NEW |
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 "chrome/browser/views/constrained_window_impl.h" | 5 #include "chrome/browser/views/constrained_window_impl.h" |
6 | 6 |
7 #include "base/gfx/rect.h" | 7 #include "base/gfx/rect.h" |
8 #include "chrome/app/chrome_dll_resource.h" | 8 #include "chrome/app/chrome_dll_resource.h" |
9 #include "chrome/app/theme/theme_resources.h" | 9 #include "chrome/app/theme/theme_resources.h" |
10 #include "chrome/browser/tab_contents.h" | 10 #include "chrome/browser/tab_contents.h" |
(...skipping 850 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 // that case and replay them when the WebContents becomes selected. | 861 // that case and replay them when the WebContents becomes selected. |
862 focus_manager->StoreFocusedView(); | 862 focus_manager->StoreFocusedView(); |
863 | 863 |
864 if (constrained_contents_) { | 864 if (constrained_contents_) { |
865 // We contain another window, let's assume it knows how to process the | 865 // We contain another window, let's assume it knows how to process the |
866 // focus and let's focus it. | 866 // focus and let's focus it. |
867 // TODO(jcampan): so far this case is the WebContents case. We need to | 867 // TODO(jcampan): so far this case is the WebContents case. We need to |
868 // better find whether the inner window should get focus. | 868 // better find whether the inner window should get focus. |
869 ::SetFocus(constrained_contents_->GetContainerHWND()); | 869 ::SetFocus(constrained_contents_->GetContainerHWND()); |
870 } else { | 870 } else { |
871 // Give our window the focus so we get keyboard messages. | 871 views::View* view_to_focus = NULL; |
872 ::SetFocus(GetHWND()); | 872 if (window_delegate()) |
| 873 view_to_focus = window_delegate()->GetInitiallyFocusedView(); |
| 874 if (view_to_focus) |
| 875 view_to_focus->RequestFocus(); |
| 876 else // Give our window the focus so we get keyboard messages. |
| 877 ::SetFocus(GetHWND()); |
873 } | 878 } |
874 } | 879 } |
875 } | 880 } |
876 | 881 |
877 void ConstrainedWindowImpl::CloseConstrainedWindow() { | 882 void ConstrainedWindowImpl::CloseConstrainedWindow() { |
878 // Broadcast to all observers of NOTIFY_CWINDOW_CLOSED. | 883 // Broadcast to all observers of NOTIFY_CWINDOW_CLOSED. |
879 // One example of such an observer is AutomationCWindowTracker in the | 884 // One example of such an observer is AutomationCWindowTracker in the |
880 // automation component. | 885 // automation component. |
881 NotificationService::current()->Notify(NOTIFY_CWINDOW_CLOSED, | 886 NotificationService::current()->Notify(NOTIFY_CWINDOW_CLOSED, |
882 Source<ConstrainedWindow>(this), | 887 Source<ConstrainedWindow>(this), |
(...skipping 501 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1384 initial_bounds, | 1389 initial_bounds, |
1385 parent->delegate()->ShouldDisplayURLField()); | 1390 parent->delegate()->ShouldDisplayURLField()); |
1386 | 1391 |
1387 window->InitSizeForContents(window_bounds); | 1392 window->InitSizeForContents(window_bounds); |
1388 | 1393 |
1389 // This is a constrained popup window and thus we need to animate it in. | 1394 // This is a constrained popup window and thus we need to animate it in. |
1390 window->StartSuppressedAnimation(); | 1395 window->StartSuppressedAnimation(); |
1391 | 1396 |
1392 return window; | 1397 return window; |
1393 } | 1398 } |
OLD | NEW |