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

Side by Side Diff: chrome/browser/ui/views/apps/chrome_native_app_window_views.cc

Issue 935193003: [Mac] Use chrome_native_app_window_views when mac_views_browser is enabled. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Put behind mac_views_browser GYP flag instead. Created 5 years, 10 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
« no previous file with comments | « no previous file | chrome/chrome_browser_ui.gypi » ('j') | chrome/chrome_browser_ui.gypi » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/apps/chrome_native_app_window_views.h" 5 #include "chrome/browser/ui/views/apps/chrome_native_app_window_views.h"
6 6
7 #include "apps/ui/views/app_window_frame_view.h" 7 #include "apps/ui/views/app_window_frame_view.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "chrome/app/chrome_command_ids.h" 9 #include "chrome/app/chrome_command_ids.h"
10 #include "chrome/browser/app_mode/app_mode_utils.h" 10 #include "chrome/browser/app_mode/app_mode_utils.h"
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 else 259 else
260 widget()->SetBounds(window_bounds); 260 widget()->SetBounds(window_bounds);
261 } 261 }
262 262
263 if (IsFrameless() && 263 if (IsFrameless() &&
264 init_params.opacity == views::Widget::InitParams::TRANSLUCENT_WINDOW) { 264 init_params.opacity == views::Widget::InitParams::TRANSLUCENT_WINDOW) {
265 // The given window is most likely not rectangular since it uses 265 // The given window is most likely not rectangular since it uses
266 // transparency and has no standard frame, don't show a shadow for it. 266 // transparency and has no standard frame, don't show a shadow for it.
267 // TODO(skuhne): If we run into an application which should have a shadow 267 // TODO(skuhne): If we run into an application which should have a shadow
268 // but does not have, a new attribute has to be added. 268 // but does not have, a new attribute has to be added.
269 #if defined(USE_AURA)
269 wm::SetShadowType(widget()->GetNativeWindow(), wm::SHADOW_TYPE_NONE); 270 wm::SetShadowType(widget()->GetNativeWindow(), wm::SHADOW_TYPE_NONE);
tapted 2015/02/20 07:50:29 I think we need a general fix for this. Mac autom
jackhou1 2015/02/26 04:35:16 Done.
271 #endif
270 } 272 }
271 273
272 #if defined(OS_CHROMEOS) 274 #if defined(OS_CHROMEOS)
273 if (create_params.is_ime_window) 275 if (create_params.is_ime_window)
274 return; 276 return;
275 #endif 277 #endif
276 278
277 // Register accelarators supported by app windows. 279 // Register accelarators supported by app windows.
278 // TODO(jeremya/stevenjb): should these be registered for panels too? 280 // TODO(jeremya/stevenjb): should these be registered for panels too?
279 views::FocusManager* focus_manager = GetFocusManager(); 281 views::FocusManager* focus_manager = GetFocusManager();
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 // specific, and lift this restriction. 610 // specific, and lift this restriction.
609 if (icon->Width() != icon->Height()) { 611 if (icon->Width() != icon->Height()) {
610 LOG(ERROR) << "Attempt to set a non-square badge; request ignored."; 612 LOG(ERROR) << "Attempt to set a non-square badge; request ignored.";
611 return; 613 return;
612 } 614 }
613 } 615 }
614 chrome::DrawTaskbarDecoration(GetNativeWindow(), icon); 616 chrome::DrawTaskbarDecoration(GetNativeWindow(), icon);
615 } 617 }
616 618
617 void ChromeNativeAppWindowViews::UpdateShape(scoped_ptr<SkRegion> region) { 619 void ChromeNativeAppWindowViews::UpdateShape(scoped_ptr<SkRegion> region) {
620 #if defined(USE_AURA)
tapted 2015/02/20 07:50:30 It's annoying... but I think we need to try to mak
jackhou1 2015/02/26 04:35:16 Done.
618 bool had_shape = shape_; 621 bool had_shape = shape_;
622 #endif
619 shape_ = region.Pass(); 623 shape_ = region.Pass();
620 624
625 #if defined(USE_AURA)
621 aura::Window* native_window = widget()->GetNativeWindow(); 626 aura::Window* native_window = widget()->GetNativeWindow();
622 if (shape_) { 627 if (shape_) {
623 widget()->SetShape(new SkRegion(*shape_)); 628 widget()->SetShape(new SkRegion(*shape_));
624 if (!had_shape) { 629 if (!had_shape) {
625 native_window->SetEventTargeter(scoped_ptr<ui::EventTargeter>( 630 native_window->SetEventTargeter(scoped_ptr<ui::EventTargeter>(
626 new ShapedAppWindowTargeter(native_window, this))); 631 new ShapedAppWindowTargeter(native_window, this)));
627 } 632 }
628 } else { 633 } else {
629 widget()->SetShape(NULL); 634 widget()->SetShape(NULL);
630 if (had_shape) 635 if (had_shape)
631 native_window->SetEventTargeter(scoped_ptr<ui::EventTargeter>()); 636 native_window->SetEventTargeter(scoped_ptr<ui::EventTargeter>());
632 } 637 }
638 #endif
633 widget()->OnSizeConstraintsChanged(); 639 widget()->OnSizeConstraintsChanged();
634 } 640 }
635 641
636 bool ChromeNativeAppWindowViews::HasFrameColor() const { 642 bool ChromeNativeAppWindowViews::HasFrameColor() const {
637 return has_frame_color_; 643 return has_frame_color_;
638 } 644 }
639 645
640 SkColor ChromeNativeAppWindowViews::ActiveFrameColor() const { 646 SkColor ChromeNativeAppWindowViews::ActiveFrameColor() const {
641 return active_frame_color_; 647 return active_frame_color_;
642 } 648 }
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 #if defined(USE_ASH) 693 #if defined(USE_ASH)
688 // For Aura windows on the Ash desktop the sizes are different and the user 694 // For Aura windows on the Ash desktop the sizes are different and the user
689 // can resize the window from slightly outside the bounds as well. 695 // can resize the window from slightly outside the bounds as well.
690 if (chrome::IsNativeWindowInAsh(widget()->GetNativeWindow())) { 696 if (chrome::IsNativeWindowInAsh(widget()->GetNativeWindow())) {
691 frame->SetResizeSizes(ash::kResizeInsideBoundsSize, 697 frame->SetResizeSizes(ash::kResizeInsideBoundsSize,
692 ash::kResizeOutsideBoundsSize, 698 ash::kResizeOutsideBoundsSize,
693 ash::kResizeAreaCornerSize); 699 ash::kResizeAreaCornerSize);
694 } 700 }
695 #endif 701 #endif
696 702
697 #if !defined(OS_CHROMEOS) 703 #if !defined(OS_CHROMEOS) && defined(USE_AURA)
tapted 2015/02/20 07:50:30 If this moves to ChromeNativeAppWindowAura the #if
jackhou1 2015/02/26 04:35:16 Done.
698 // For non-Ash windows, install an easy resize window targeter, which ensures 704 // For non-Ash windows, install an easy resize window targeter, which ensures
699 // that the root window (not the app) receives mouse events on the edges. 705 // that the root window (not the app) receives mouse events on the edges.
700 if (chrome::GetHostDesktopTypeForNativeWindow(widget()->GetNativeWindow()) != 706 if (chrome::GetHostDesktopTypeForNativeWindow(widget()->GetNativeWindow()) !=
701 chrome::HOST_DESKTOP_TYPE_ASH) { 707 chrome::HOST_DESKTOP_TYPE_ASH) {
702 aura::Window* window = widget()->GetNativeWindow(); 708 aura::Window* window = widget()->GetNativeWindow();
703 int resize_inside = frame->resize_inside_bounds_size(); 709 int resize_inside = frame->resize_inside_bounds_size();
704 gfx::Insets inset( 710 gfx::Insets inset(
705 resize_inside, resize_inside, resize_inside, resize_inside); 711 resize_inside, resize_inside, resize_inside, resize_inside);
706 // Add the EasyResizeWindowTargeter on the window, not its root window. The 712 // Add the EasyResizeWindowTargeter on the window, not its root window. The
707 // root window does not have a delegate, which is needed to handle the event 713 // root window does not have a delegate, which is needed to handle the event
708 // in Linux. 714 // in Linux.
709 window->SetEventTargeter(scoped_ptr<ui::EventTargeter>( 715 window->SetEventTargeter(scoped_ptr<ui::EventTargeter>(
710 new wm::EasyResizeWindowTargeter(window, inset, inset))); 716 new wm::EasyResizeWindowTargeter(window, inset, inset)));
711 } 717 }
712 #endif 718 #endif
713 719
714 return frame; 720 return frame;
715 } 721 }
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_browser_ui.gypi » ('j') | chrome/chrome_browser_ui.gypi » ('J')

Powered by Google App Engine
This is Rietveld 408576698