summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-22 14:28:56 +0000
committerflackr@chromium.org <flackr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-10-22 14:28:56 +0000
commitf2026eb8850367e0a993cac3e32fcae2f0afcdc0 (patch)
tree6bb1e5410fade144cb3c17efe239d51bc52a81fb
parent7fa0f51ee06e325070adf12254ec0811499e8182 (diff)
downloadchromium_src-f2026eb8850367e0a993cac3e32fcae2f0afcdc0.zip
chromium_src-f2026eb8850367e0a993cac3e32fcae2f0afcdc0.tar.gz
chromium_src-f2026eb8850367e0a993cac3e32fcae2f0afcdc0.tar.bz2
Move the panel container above the shelf.
The callout widgets (arrows) pointing down from the panel windows need to show above the shelf and must be stacked with the panel windows in order for the shadows to be drawn correctly. A new container is created for shelf bubble windows (currently only the overflow bubble) so that it can show above the attached panel windows. BUG=292840 TEST=Open a panel window such as hangouts and then maximize a browser window. The arrow pointing to the launcher icon from the panel window should still be visible. Review URL: https://codereview.chromium.org/30673003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@230125 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--ash/root_window_controller.cc17
-rw-r--r--ash/shelf/overflow_bubble.cc4
-rw-r--r--ash/shell_window_ids.h37
3 files changed, 36 insertions, 22 deletions
diff --git a/ash/root_window_controller.cc b/ash/root_window_controller.cc
index 6964f14..946e1e3 100644
--- a/ash/root_window_controller.cc
+++ b/ash/root_window_controller.cc
@@ -765,18 +765,25 @@ void RootWindowController::CreateContainersInRootWindow(
views::corewm::SetChildWindowVisibilityChangesAnimated(docked_container);
SetUsesScreenCoordinates(docked_container);
+ aura::Window* shelf_container =
+ CreateContainer(kShellWindowId_ShelfContainer,
+ "ShelfContainer",
+ non_lock_screen_containers);
+ SetUsesScreenCoordinates(shelf_container);
+ DescendantShouldStayInSameRootWindow(shelf_container);
+
aura::Window* panel_container = CreateContainer(
kShellWindowId_PanelContainer,
"PanelContainer",
non_lock_screen_containers);
SetUsesScreenCoordinates(panel_container);
- aura::Window* shelf_container =
- CreateContainer(kShellWindowId_ShelfContainer,
- "ShelfContainer",
+ aura::Window* shelf_bubble_container =
+ CreateContainer(kShellWindowId_ShelfBubbleContainer,
+ "ShelfBubbleContainer",
non_lock_screen_containers);
- SetUsesScreenCoordinates(shelf_container);
- DescendantShouldStayInSameRootWindow(shelf_container);
+ SetUsesScreenCoordinates(shelf_bubble_container);
+ DescendantShouldStayInSameRootWindow(shelf_bubble_container);
aura::Window* app_list_container =
CreateContainer(kShellWindowId_AppListContainer,
diff --git a/ash/shelf/overflow_bubble.cc b/ash/shelf/overflow_bubble.cc
index 554e89f5..0b62f46 100644
--- a/ash/shelf/overflow_bubble.cc
+++ b/ash/shelf/overflow_bubble.cc
@@ -12,6 +12,7 @@
#include "ash/shelf/shelf_view.h"
#include "ash/shelf/shelf_widget.h"
#include "ash/shell.h"
+#include "ash/shell_window_ids.h"
#include "ash/system/tray/system_tray.h"
#include "ui/aura/client/screen_position_client.h"
#include "ui/aura/root_window.h"
@@ -120,6 +121,9 @@ void OverflowBubbleView::InitOverflowBubble(views::View* anchor,
shelf_view_ = shelf_view;
AddChildView(shelf_view_);
+ set_parent_window(Shell::GetContainer(
+ anchor->GetWidget()->GetNativeWindow()->GetRootWindow(),
+ internal::kShellWindowId_ShelfBubbleContainer));
views::BubbleDelegateView::CreateBubble(this);
}
diff --git a/ash/shell_window_ids.h b/ash/shell_window_ids.h
index 1c1c396..ab5fd23 100644
--- a/ash/shell_window_ids.h
+++ b/ash/shell_window_ids.h
@@ -50,54 +50,57 @@ const int kShellWindowId_AlwaysOnTopContainer = 7;
// The container for windows docked to either side of the desktop.
const int kShellWindowId_DockedContainer = 8;
-// The container for panel windows.
-const int kShellWindowId_PanelContainer = 9;
-
// The container for the shelf.
-const int kShellWindowId_ShelfContainer = 10;
+const int kShellWindowId_ShelfContainer = 9;
+
+// The container for bubbles which float over the shelf.
+const int kShellWindowId_ShelfBubbleContainer = 10;
+
+// The container for panel windows.
+const int kShellWindowId_PanelContainer = 11;
// The container for the app list.
-const int kShellWindowId_AppListContainer = 11;
+const int kShellWindowId_AppListContainer = 12;
// The container for user-specific modal windows.
-const int kShellWindowId_SystemModalContainer = 12;
+const int kShellWindowId_SystemModalContainer = 13;
// The container for input method components such like candidate windows. They
// are almost panels but have no activations/focus, and they should appear over
// the AppList and SystemModal dialogs.
-const int kShellWindowId_InputMethodContainer = 13;
+const int kShellWindowId_InputMethodContainer = 14;
// The container for the lock screen background.
-const int kShellWindowId_LockScreenBackgroundContainer = 14;
+const int kShellWindowId_LockScreenBackgroundContainer = 15;
// The container for the lock screen.
-const int kShellWindowId_LockScreenContainer = 15;
+const int kShellWindowId_LockScreenContainer = 16;
// The container for the lock screen modal windows.
-const int kShellWindowId_LockSystemModalContainer = 16;
+const int kShellWindowId_LockSystemModalContainer = 17;
// The container for the status area.
-const int kShellWindowId_StatusContainer = 17;
+const int kShellWindowId_StatusContainer = 18;
// The container for menus.
-const int kShellWindowId_MenuContainer = 18;
+const int kShellWindowId_MenuContainer = 19;
// The container for drag/drop images and tooltips.
-const int kShellWindowId_DragImageAndTooltipContainer = 19;
+const int kShellWindowId_DragImageAndTooltipContainer = 20;
// The container for bubbles briefly overlaid onscreen to show settings changes
// (volume, brightness, etc.).
-const int kShellWindowId_SettingBubbleContainer = 20;
+const int kShellWindowId_SettingBubbleContainer = 21;
// The container for special components overlaid onscreen, such as the
// region selector for partial screenshots.
-const int kShellWindowId_OverlayContainer = 21;
+const int kShellWindowId_OverlayContainer = 22;
// ID of the window created by PhantomWindowController or DragWindowController.
-const int kShellWindowId_PhantomWindow = 22;
+const int kShellWindowId_PhantomWindow = 23;
// The topmost container, used for power off animation.
-const int kShellWindowId_PowerButtonAnimationContainer = 23;
+const int kShellWindowId_PowerButtonAnimationContainer = 24;
} // namespace internal