summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/download_shelf_gtk.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/gtk/download_shelf_gtk.cc')
-rw-r--r--chrome/browser/gtk/download_shelf_gtk.cc14
1 files changed, 11 insertions, 3 deletions
diff --git a/chrome/browser/gtk/download_shelf_gtk.cc b/chrome/browser/gtk/download_shelf_gtk.cc
index ab5e4c3..ceb8979 100644
--- a/chrome/browser/gtk/download_shelf_gtk.cc
+++ b/chrome/browser/gtk/download_shelf_gtk.cc
@@ -79,9 +79,14 @@ DownloadShelfGtk::DownloadShelfGtk(Browser* browser, GtkWidget* parent)
gtk_container_add(GTK_CONTAINER(padding), hbox_.get());
gtk_widget_modify_bg(padding_bg, GTK_STATE_NORMAL, &kBackgroundColor);
- shelf_.Own(gtk_vbox_new(FALSE, 0));
- gtk_box_pack_start(GTK_BOX(shelf_.get()), top_border, FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(shelf_.get()), padding_bg, FALSE, FALSE, 0);
+ GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), top_border, FALSE, FALSE, 0);
+ gtk_box_pack_start(GTK_BOX(vbox), padding_bg, FALSE, FALSE, 0);
+
+ // Put the shelf in an event box so it gets its own window, which makes it
+ // easier to get z-ordering right.
+ shelf_.Own(gtk_event_box_new());
+ gtk_container_add(GTK_CONTAINER(shelf_.get()), vbox);
// Create and pack the close button.
close_button_.reset(CustomDrawButton::CloseButton());
@@ -151,6 +156,9 @@ void DownloadShelfGtk::Show() {
}
void DownloadShelfGtk::Close() {
+ // When we are closing, we can vertically overlap the render view. Make sure
+ // we are on top.
+ gdk_window_raise(shelf_.get()->window);
slide_widget_->Close();
// TODO(estade): Remove. The status bubble should query its window instead.