Index: views/widget/widget_win.cc |
=================================================================== |
--- views/widget/widget_win.cc (revision 22173) |
+++ views/widget/widget_win.cc (working copy) |
@@ -6,13 +6,13 @@ |
#include "app/gfx/canvas.h" |
#include "app/gfx/path.h" |
+#include "app/l10n_util_win.h" |
#include "app/win_util.h" |
#include "base/gfx/native_theme.h" |
#include "base/string_util.h" |
#include "base/win_util.h" |
#include "views/accessibility/view_accessibility.h" |
#include "views/controls/native_control_win.h" |
-#include "views/fill_layout.h" |
#include "views/focus/focus_util_win.h" |
#include "views/views_delegate.h" |
#include "views/widget/aero_tooltip_manager.h" |
@@ -154,7 +154,10 @@ |
MessageLoopForUI::current()->RemoveObserver(this); |
} |
-void WidgetWin::Init(HWND parent, const gfx::Rect& bounds) { |
+/////////////////////////////////////////////////////////////////////////////// |
+// Widget implementation: |
+ |
+void WidgetWin::Init(gfx::NativeView parent, const gfx::Rect& bounds) { |
if (window_style_ == 0) |
window_style_ = parent ? kWindowDefaultChildStyle : kWindowDefaultStyle; |
@@ -218,24 +221,9 @@ |
} |
void WidgetWin::SetContentsView(View* view) { |
- DCHECK(view && hwnd_) << "Can't be called until after the HWND is created!"; |
- // The ContentsView must be set up _after_ the window is created so that its |
- // Widget pointer is valid. |
- root_view_->SetLayoutManager(new FillLayout); |
- if (root_view_->GetChildViewCount() != 0) |
- root_view_->RemoveAllChildViews(true); |
- root_view_->AddChildView(view); |
- |
- // Force a layout now, since the attached hierarchy won't be ready for the |
- // containing window's bounds. Note that we call Layout directly rather than |
- // calling ChangeSize, since the RootView's bounds may not have changed, which |
- // will cause the Layout not to be done otherwise. |
- root_view_->Layout(); |
+ root_view_->SetContentsView(view); |
} |
-/////////////////////////////////////////////////////////////////////////////// |
-// Widget implementation: |
- |
void WidgetWin::GetBounds(gfx::Rect* out, bool including_frame) const { |
CRect crect; |
if (including_frame) { |
@@ -1088,4 +1076,20 @@ |
widget->focus_manager_->RestoreFocusedView(); |
} |
} |
+ |
+//////////////////////////////////////////////////////////////////////////////// |
+// Widget, public: |
+ |
+// static |
+Widget* Widget::CreateTransparentPopupWidget(bool delete_on_destroy) { |
+ WidgetWin* popup = new WidgetWin; |
+ popup->set_window_style(WS_POPUP); |
+ popup->set_window_ex_style(WS_EX_LAYERED | WS_EX_TOOLWINDOW | |
+ WS_EX_TRANSPARENT | |
+ l10n_util::GetExtendedTooltipStyles()); |
+ popup->set_delete_on_destroy(delete_on_destroy); |
+ return popup; |
+} |
+ |
} // namespace views |
+ |