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

Side by Side Diff: chrome/browser/ui/views/frame/browser_view_layout.cc

Issue 272543003: Remove unused code for the metro window switcher button (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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/ui/views/frame/browser_view_layout.h" 5 #include "chrome/browser/ui/views/frame/browser_view_layout.h"
6 6
7 #include "base/observer_list.h" 7 #include "base/observer_list.h"
8 #include "chrome/browser/profiles/profile.h" 8 #include "chrome/browser/profiles/profile.h"
9 #include "chrome/browser/ui/browser.h" 9 #include "chrome/browser/ui/browser.h"
10 #include "chrome/browser/ui/browser_finder.h" 10 #include "chrome/browser/ui/browser_finder.h"
(...skipping 21 matching lines...) Expand all
32 32
33 using views::View; 33 using views::View;
34 using web_modal::WebContentsModalDialogHost; 34 using web_modal::WebContentsModalDialogHost;
35 using web_modal::ModalDialogHostObserver; 35 using web_modal::ModalDialogHostObserver;
36 36
37 namespace { 37 namespace {
38 38
39 // The visible height of the shadow above the tabs. Clicks in this area are 39 // The visible height of the shadow above the tabs. Clicks in this area are
40 // treated as clicks to the frame, rather than clicks to the tab. 40 // treated as clicks to the frame, rather than clicks to the tab.
41 const int kTabShadowSize = 2; 41 const int kTabShadowSize = 2;
42 // The number of pixels the metro switcher is offset from the right edge.
43 const int kWindowSwitcherOffsetX = 7;
44 // The number of pixels the constrained window should overlap the bottom 42 // The number of pixels the constrained window should overlap the bottom
45 // of the omnibox. 43 // of the omnibox.
46 const int kConstrainedWindowOverlap = 3; 44 const int kConstrainedWindowOverlap = 3;
47 45
48 // Combines View::ConvertPointToTarget and View::HitTest for a given |point|. 46 // Combines View::ConvertPointToTarget and View::HitTest for a given |point|.
49 // Converts |point| from |src| to |dst| and hit tests it against |dst|. The 47 // Converts |point| from |src| to |dst| and hit tests it against |dst|. The
50 // converted |point| can then be retrieved and used for additional tests. 48 // converted |point| can then be retrieved and used for additional tests.
51 bool ConvertedHitTest(views::View* src, views::View* dst, gfx::Point* point) { 49 bool ConvertedHitTest(views::View* src, views::View* dst, gfx::Point* point) {
52 DCHECK(src); 50 DCHECK(src);
53 DCHECK(dst); 51 DCHECK(dst);
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 287
290 // If the point's y coordinate is below the top of the toolbar and otherwise 288 // If the point's y coordinate is below the top of the toolbar and otherwise
291 // within the bounds of this view, the point is considered to be within the 289 // within the bounds of this view, the point is considered to be within the
292 // client area. 290 // client area.
293 gfx::Rect bv_bounds = browser_view_->bounds(); 291 gfx::Rect bv_bounds = browser_view_->bounds();
294 bv_bounds.Offset(0, toolbar_->y()); 292 bv_bounds.Offset(0, toolbar_->y());
295 bv_bounds.set_height(bv_bounds.height() - toolbar_->y()); 293 bv_bounds.set_height(bv_bounds.height() - toolbar_->y());
296 if (bv_bounds.Contains(point)) 294 if (bv_bounds.Contains(point))
297 return HTCLIENT; 295 return HTCLIENT;
298 296
299 // If the point is within the bounds of the window switcher button, the point 297 // If the point's y coordinate is above the top of the toolbar, but not
300 // is considered to be within the client area. 298 // over the tabstrip (per previous checking in this function), then we
301 views::View* window_switcher_button = delegate_->GetWindowSwitcherButton(); 299 // consider it in the window caption (e.g. the area to the right of the
302 if (window_switcher_button && window_switcher_button->visible()) { 300 // tabstrip underneath the window controls). However, note that we DO NOT
303 gfx::Point window_switcher_point(point_in_browser_view_coords); 301 // return HTCAPTION here, because when the window is maximized the window
304 views::View::ConvertPointToTarget(browser_view_, window_switcher_button, 302 // controls will fall into this space (since the BrowserView is sized to
305 &window_switcher_point); 303 // entire size of the window at that point), and the HTCAPTION value will
306 if (window_switcher_button->HitTestPoint(window_switcher_point)) 304 // cause the window controls not to work. So we return HTNOWHERE so that the
307 return HTCLIENT; 305 // caller will hit-test the window controls before finally falling back to
308 } 306 // HTCAPTION.
309
310 // If the point's y coordinate is above the top of the toolbar, but neither
311 // over the tabstrip nor over the window switcher button (per previous
312 // checking in this function), then we consider it in the window caption
313 // (e.g. the area to the right of the tabstrip underneath the window
314 // controls). However, note that we DO NOT return HTCAPTION here, because
315 // when the window is maximized the window controls will fall into this
316 // space (since the BrowserView is sized to entire size of the window at that
317 // point), and the HTCAPTION value will cause the window controls not to work.
318 // So we return HTNOWHERE so that the caller will hit-test the window controls
319 // before finally falling back to HTCAPTION.
320 bv_bounds = browser_view_->bounds(); 307 bv_bounds = browser_view_->bounds();
321 bv_bounds.set_height(toolbar_->y()); 308 bv_bounds.set_height(toolbar_->y());
322 if (bv_bounds.Contains(point)) 309 if (bv_bounds.Contains(point))
323 return HTNOWHERE; 310 return HTNOWHERE;
324 311
325 // If the point is somewhere else, delegate to the default implementation. 312 // If the point is somewhere else, delegate to the default implementation.
326 return browser_view_->views::ClientView::NonClientHitTest(point); 313 return browser_view_->views::ClientView::NonClientHitTest(point);
327 } 314 }
328 315
329 ////////////////////////////////////////////////////////////////////////////// 316 //////////////////////////////////////////////////////////////////////////////
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
395 tab_strip_->SetVisible(false); 382 tab_strip_->SetVisible(false);
396 tab_strip_->SetBounds(0, 0, 0, 0); 383 tab_strip_->SetBounds(0, 0, 0, 0);
397 return top; 384 return top;
398 } 385 }
399 // This retrieves the bounds for the tab strip based on whether or not we show 386 // This retrieves the bounds for the tab strip based on whether or not we show
400 // anything to the left of it, like the incognito avatar. 387 // anything to the left of it, like the incognito avatar.
401 gfx::Rect tabstrip_bounds(delegate_->GetBoundsForTabStripInBrowserView()); 388 gfx::Rect tabstrip_bounds(delegate_->GetBoundsForTabStripInBrowserView());
402 389
403 tab_strip_->SetVisible(true); 390 tab_strip_->SetVisible(true);
404 tab_strip_->SetBoundsRect(tabstrip_bounds); 391 tab_strip_->SetBoundsRect(tabstrip_bounds);
405 int bottom = tabstrip_bounds.bottom();
406 392
407 // The metro window switcher sits at the far right edge of the tabstrip 393 return tabstrip_bounds.bottom();
408 // a |kWindowSwitcherOffsetX| pixels from the right edge.
409 // Only visible if there is more than one type of window to switch between.
410 // TODO(mad): update this code when more window types than just incognito
411 // and regular are available.
412 views::View* switcher_button = delegate_->GetWindowSwitcherButton();
413 if (switcher_button) {
414 if (browser()->profile()->HasOffTheRecordProfile() &&
415 chrome::FindBrowserWithProfile(
416 browser()->profile()->GetOriginalProfile(),
417 browser()->host_desktop_type()) != NULL) {
418 switcher_button->SetVisible(true);
419 int width = browser_view_->width();
420 gfx::Size ps = switcher_button->GetPreferredSize();
421 if (width > ps.width()) {
422 switcher_button->SetBounds(width - ps.width() - kWindowSwitcherOffsetX,
423 0,
424 ps.width(),
425 ps.height());
426 }
427 } else {
428 // We hide the button if the incognito profile is not alive.
429 // Note that Layout() is not called to all browser windows automatically
430 // when a profile goes away but we rely in the metro_driver.dll to call
431 // ::SetWindowPos( , .. SWP_SHOWWINDOW) which causes this function to
432 // be called again. This works both in showing or hidding the button.
433 switcher_button->SetVisible(false);
434 }
435 }
436
437 return bottom;
438 } 394 }
439 395
440 int BrowserViewLayout::LayoutToolbar(int top) { 396 int BrowserViewLayout::LayoutToolbar(int top) {
441 int browser_view_width = vertical_layout_rect_.width(); 397 int browser_view_width = vertical_layout_rect_.width();
442 bool toolbar_visible = delegate_->IsToolbarVisible(); 398 bool toolbar_visible = delegate_->IsToolbarVisible();
443 int y = top; 399 int y = top;
444 y -= (toolbar_visible && delegate_->IsTabStripVisible()) ? 400 y -= (toolbar_visible && delegate_->IsTabStripVisible()) ?
445 kToolbarTabStripVerticalOverlap : 0; 401 kToolbarTabStripVerticalOverlap : 0;
446 int height = toolbar_visible ? toolbar_->GetPreferredSize().height() : 0; 402 int height = toolbar_visible ? toolbar_->GetPreferredSize().height() : 0;
447 toolbar_->SetVisible(toolbar_visible); 403 toolbar_->SetVisible(toolbar_visible);
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after
584 return bottom; 540 return bottom;
585 } 541 }
586 542
587 bool BrowserViewLayout::InfobarVisible() const { 543 bool BrowserViewLayout::InfobarVisible() const {
588 // Cast to a views::View to access GetPreferredSize(). 544 // Cast to a views::View to access GetPreferredSize().
589 views::View* infobar_container = infobar_container_; 545 views::View* infobar_container = infobar_container_;
590 // NOTE: Can't check if the size IsEmpty() since it's always 0-width. 546 // NOTE: Can't check if the size IsEmpty() since it's always 0-width.
591 return browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR) && 547 return browser_->SupportsWindowFeature(Browser::FEATURE_INFOBAR) &&
592 (infobar_container->GetPreferredSize().height() != 0); 548 (infobar_container->GetPreferredSize().height() != 0);
593 } 549 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/frame/browser_view.cc ('k') | chrome/browser/ui/views/frame/browser_view_layout_delegate.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698