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

Side by Side Diff: ash/wm/frame_painter.cc

Issue 23625007: Replace kIgnoreSoloWindowFramePointerPolicy with global flag (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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
« no previous file with comments | « ash/wm/frame_painter.h ('k') | ash/wm/window_properties.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 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 "ash/wm/frame_painter.h" 5 #include "ash/wm/frame_painter.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "ash/ash_constants.h" 9 #include "ash/ash_constants.h"
10 #include "ash/root_window_controller.h" 10 #include "ash/root_window_controller.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 // right relative to the header. Now that we have removed the left edge frame 69 // right relative to the header. Now that we have removed the left edge frame
70 // we need to copy the theme image for the window header from a few pixels 70 // we need to copy the theme image for the window header from a few pixels
71 // inset to preserve alignment with the NTP image, or else we'll break a bunch 71 // inset to preserve alignment with the NTP image, or else we'll break a bunch
72 // of existing themes. We do something similar on OS X for the same reason. 72 // of existing themes. We do something similar on OS X for the same reason.
73 const int kThemeFrameImageInsetX = 5; 73 const int kThemeFrameImageInsetX = 5;
74 // Duration of crossfade animation for activating and deactivating frame. 74 // Duration of crossfade animation for activating and deactivating frame.
75 const int kActivationCrossfadeDurationMs = 200; 75 const int kActivationCrossfadeDurationMs = 200;
76 // Alpha/opacity value for fully-opaque headers. 76 // Alpha/opacity value for fully-opaque headers.
77 const int kFullyOpaque = 255; 77 const int kFullyOpaque = 255;
78 78
79 // A flag to enable/disable solo window header.
80 bool solo_window_header_enabled = true;
81
79 // Tiles an image into an area, rounding the top corners. Samples |image| 82 // Tiles an image into an area, rounding the top corners. Samples |image|
80 // starting |image_inset_x| pixels from the left of the image. 83 // starting |image_inset_x| pixels from the left of the image.
81 void TileRoundRect(gfx::Canvas* canvas, 84 void TileRoundRect(gfx::Canvas* canvas,
82 const gfx::ImageSkia& image, 85 const gfx::ImageSkia& image,
83 const SkPaint& paint, 86 const SkPaint& paint,
84 const gfx::Rect& bounds, 87 const gfx::Rect& bounds,
85 int top_left_corner_radius, 88 int top_left_corner_radius,
86 int top_right_corner_radius, 89 int top_right_corner_radius,
87 int image_inset_x) { 90 int image_inset_x) {
88 SkRect rect = gfx::RectToSkRect(bounds); 91 SkRect rect = gfx::RectToSkRect(bounds);
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 // Watch for maximize/restore/fullscreen state changes. Observer removes 272 // Watch for maximize/restore/fullscreen state changes. Observer removes
270 // itself in OnWindowDestroying() below, or in the destructor if we go away 273 // itself in OnWindowDestroying() below, or in the destructor if we go away
271 // before the window. 274 // before the window.
272 window_->AddObserver(this); 275 window_->AddObserver(this);
273 276
274 // Solo-window header updates are handled by the workspace controller when 277 // Solo-window header updates are handled by the workspace controller when
275 // this window is added to the desktop. 278 // this window is added to the desktop.
276 } 279 }
277 280
278 // static 281 // static
282 void FramePainter::SetSoloWindowHeadersEnabled(bool enabled) {
283 solo_window_header_enabled = enabled;
284 }
285
286 // static
279 void FramePainter::UpdateSoloWindowHeader(RootWindow* root_window) { 287 void FramePainter::UpdateSoloWindowHeader(RootWindow* root_window) {
280 // Use a separate function here so callers outside of FramePainter don't need 288 // Use a separate function here so callers outside of FramePainter don't need
281 // to know about "ignorable_window". 289 // to know about "ignorable_window".
282 UpdateSoloWindowInRoot(root_window, NULL /* ignorable_window */); 290 UpdateSoloWindowInRoot(root_window, NULL /* ignorable_window */);
283 } 291 }
284 292
285 gfx::Rect FramePainter::GetBoundsForClientView( 293 gfx::Rect FramePainter::GetBoundsForClientView(
286 int top_height, 294 int top_height,
287 const gfx::Rect& window_bounds) const { 295 const gfx::Rect& window_bounds) const {
288 return gfx::Rect( 296 return gfx::Rect(
(...skipping 452 matching lines...) Expand 10 before | Expand all | Expand 10 after
741 if (UseSoloWindowHeader()) 749 if (UseSoloWindowHeader())
742 return kSoloWindowOpacity; 750 return kSoloWindowOpacity;
743 751
744 // Otherwise, change transparency based on window activation status. 752 // Otherwise, change transparency based on window activation status.
745 if (header_mode == ACTIVE) 753 if (header_mode == ACTIVE)
746 return kActiveWindowOpacity; 754 return kActiveWindowOpacity;
747 return kInactiveWindowOpacity; 755 return kInactiveWindowOpacity;
748 } 756 }
749 757
750 bool FramePainter::UseSoloWindowHeader() const { 758 bool FramePainter::UseSoloWindowHeader() const {
759 if (!solo_window_header_enabled)
760 return false;
751 // Don't use transparent headers for panels, pop-ups, etc. 761 // Don't use transparent headers for panels, pop-ups, etc.
752 if (!IsSoloWindowHeaderCandidate(window_)) 762 if (!IsSoloWindowHeaderCandidate(window_))
753 return false; 763 return false;
754 aura::RootWindow* root = window_->GetRootWindow(); 764 aura::RootWindow* root = window_->GetRootWindow();
755 if (!root || root->GetProperty(internal::kIgnoreSoloWindowFramePainterPolicy))
756 return false;
757 // Don't recompute every time, as it would require many window property 765 // Don't recompute every time, as it would require many window property
758 // lookups. 766 // lookups.
759 return internal::GetRootWindowSettings(root)->solo_window_header; 767 return internal::GetRootWindowSettings(root)->solo_window_header;
760 } 768 }
761 769
762 // static 770 // static
763 bool FramePainter::UseSoloWindowHeaderInRoot(RootWindow* root_window, 771 bool FramePainter::UseSoloWindowHeaderInRoot(RootWindow* root_window,
764 Window* ignore_window) { 772 Window* ignore_window) {
765 int visible_window_count = 0; 773 int visible_window_count = 0;
766 std::vector<Window*> windows = GetWindowsForSoloHeaderUpdate(root_window); 774 std::vector<Window*> windows = GetWindowsForSoloHeaderUpdate(root_window);
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
830 // icon. Don't use |window_icon_| for this computation as it may be NULL. 838 // icon. Don't use |window_icon_| for this computation as it may be NULL.
831 int title_y = GetCaptionButtonContainerCenterY() - title_font.GetHeight() / 2; 839 int title_y = GetCaptionButtonContainerCenterY() - title_font.GetHeight() / 2;
832 return gfx::Rect( 840 return gfx::Rect(
833 title_x, 841 title_x,
834 std::max(0, title_y), 842 std::max(0, title_y),
835 std::max(0, caption_button_container_->x() - kTitleLogoSpacing - title_x), 843 std::max(0, caption_button_container_->x() - kTitleLogoSpacing - title_x),
836 title_font.GetHeight()); 844 title_font.GetHeight());
837 } 845 }
838 846
839 } // namespace ash 847 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/frame_painter.h ('k') | ash/wm/window_properties.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698