Index: chrome/browser/ui/panels/panel_browser_window_gtk.cc |
diff --git a/chrome/browser/ui/panels/panel_browser_window_gtk.cc b/chrome/browser/ui/panels/panel_browser_window_gtk.cc |
index 3f83e355a0f0a8f3df52ef1b9562ae0eb9b7e70d..2fabe2b238478eb4b573ea33498e2bae3b5deb1b 100644 |
--- a/chrome/browser/ui/panels/panel_browser_window_gtk.cc |
+++ b/chrome/browser/ui/panels/panel_browser_window_gtk.cc |
@@ -95,6 +95,10 @@ void PanelBrowserWindowGtk::Init() { |
G_CALLBACK(OnTitlebarButtonReleaseEventThunk), this); |
ui::WorkAreaWatcherX::AddObserver(this); |
+ registrar_.Add( |
+ this, |
+ chrome::NOTIFICATION_PANEL_CHANGED_EXPANSION_STATE, |
+ content::Source<Panel>(panel_.get())); |
} |
bool PanelBrowserWindowGtk::GetWindowEdge(int x, int y, GdkWindowEdge* edge) { |
@@ -231,6 +235,19 @@ void PanelBrowserWindowGtk::WorkAreaChanged() { |
panel_->manager()->OnDisplayChanged(); |
} |
+void PanelBrowserWindowGtk::Observe( |
+ int type, |
+ const content::NotificationSource& source, |
+ const content::NotificationDetails& details) { |
+ if (type == chrome::NOTIFICATION_PANEL_CHANGED_EXPANSION_STATE) { |
+ bool accept_focus = (panel_->expansion_state() == Panel::EXPANDED); |
+ gdk_window_set_accept_focus( |
+ gtk_widget_get_window(GTK_WIDGET(window())), accept_focus); |
+ } |
+ |
+ BrowserWindowGtk::Observe(type, source, details); |
+} |
+ |
void PanelBrowserWindowGtk::ShowPanel() { |
Show(); |
} |
@@ -279,8 +296,6 @@ void PanelBrowserWindowGtk::ClosePanel() { |
} |
void PanelBrowserWindowGtk::ActivatePanel() { |
- gdk_window_set_accept_focus( |
- gtk_widget_get_window(GTK_WIDGET(window())), TRUE); |
Activate(); |
} |
@@ -292,11 +307,6 @@ void PanelBrowserWindowGtk::DeactivatePanel() { |
} else { |
Deactivate(); |
} |
- |
- if (panel_->expansion_state() == Panel::MINIMIZED) { |
- gdk_window_set_accept_focus( |
- gtk_widget_get_window(GTK_WIDGET(window())), FALSE); |
- } |
} |
bool PanelBrowserWindowGtk::IsPanelActive() const { |