Home | History | Annotate | Download | only in bubble
      1 // Copyright (c) 2011 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 "chrome/browser/ui/views/bubble/border_widget_win.h"
      6 
      7 #include <windows.h>
      8 
      9 #include "chrome/browser/ui/views/bubble/border_contents.h"
     10 
     11 BorderWidgetWin::BorderWidgetWin()
     12     : border_contents_(NULL) {
     13   set_window_style(WS_POPUP);
     14   set_window_ex_style(WS_EX_TOOLWINDOW | WS_EX_LAYERED);
     15 }
     16 
     17 void BorderWidgetWin::Init(BorderContents* border_contents, HWND owner) {
     18   DCHECK(!border_contents_);
     19   border_contents_ = border_contents;
     20   border_contents_->Init();
     21   WidgetWin::Init(owner, gfx::Rect());
     22   SetContentsView(border_contents_);
     23   SetWindowPos(owner, 0, 0, 0, 0,
     24                SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE | SWP_NOREDRAW);
     25 }
     26 
     27 gfx::Rect BorderWidgetWin::SizeAndGetBounds(
     28     const gfx::Rect& position_relative_to,
     29     BubbleBorder::ArrowLocation arrow_location,
     30     const gfx::Size& contents_size) {
     31   // Ask the border view to calculate our bounds (and our contents').
     32   gfx::Rect contents_bounds;
     33   gfx::Rect window_bounds;
     34   border_contents_->SizeAndGetBounds(position_relative_to, arrow_location,
     35                                      false, contents_size, &contents_bounds,
     36                                      &window_bounds);
     37   SetBounds(window_bounds);
     38 
     39   // Return |contents_bounds| in screen coordinates.
     40   contents_bounds.Offset(window_bounds.origin());
     41   return contents_bounds;
     42 }
     43 
     44 LRESULT BorderWidgetWin::OnMouseActivate(UINT message,
     45                                       WPARAM w_param,
     46                                       LPARAM l_param) {
     47   // Never activate.
     48   return MA_NOACTIVATE;
     49 }
     50