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

Unified Diff: chrome/browser/ui/panels/panel_browser_window_gtk.cc

Issue 9318018: Panels not getting focus on Linux when expanded from API on Linux. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Code review. Created 8 years, 11 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 side-by-side diff with in-line comments
Download patch
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 {

Powered by Google App Engine
This is Rietveld 408576698