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

Side by Side Diff: chrome/browser/gtk/options/options_window_gtk.cc

Issue 402099: Add an accessibility API for events raised outside of the web content. (Closed) Base URL: http://src.chromium.org/svn/trunk/src/
Patch Set: '' Created 10 years, 10 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 | « chrome/browser/gtk/options/general_page_gtk.cc ('k') | chrome/browser/profile.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) 2006-2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2009 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 "chrome/browser/options_window.h" 5 #include "chrome/browser/options_window.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 8
9 #include "app/l10n_util.h" 9 #include "app/l10n_util.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
11 #include "base/scoped_ptr.h"
11 #include "chrome/browser/browser_list.h" 12 #include "chrome/browser/browser_list.h"
12 #include "chrome/browser/browser_process.h" 13 #include "chrome/browser/browser_process.h"
13 #include "chrome/browser/browser_window.h" 14 #include "chrome/browser/browser_window.h"
15 #include "chrome/browser/gtk/accessible_widget_helper_gtk.h"
14 #include "chrome/browser/gtk/options/advanced_page_gtk.h" 16 #include "chrome/browser/gtk/options/advanced_page_gtk.h"
15 #include "chrome/browser/gtk/options/content_page_gtk.h" 17 #include "chrome/browser/gtk/options/content_page_gtk.h"
16 #include "chrome/browser/gtk/options/general_page_gtk.h" 18 #include "chrome/browser/gtk/options/general_page_gtk.h"
17 #include "chrome/browser/profile.h" 19 #include "chrome/browser/profile.h"
18 #include "chrome/browser/window_sizer.h" 20 #include "chrome/browser/window_sizer.h"
21 #include "chrome/common/accessibility_events.h"
19 #include "chrome/common/gtk_util.h" 22 #include "chrome/common/gtk_util.h"
23 #include "chrome/common/notification_service.h"
20 #include "chrome/common/pref_member.h" 24 #include "chrome/common/pref_member.h"
21 #include "chrome/common/pref_names.h" 25 #include "chrome/common/pref_names.h"
22 #include "chrome/common/pref_service.h" 26 #include "chrome/common/pref_service.h"
23 #include "grit/chromium_strings.h" 27 #include "grit/chromium_strings.h"
24 #include "grit/generated_resources.h" 28 #include "grit/generated_resources.h"
25 29
26 #if defined(OS_CHROMEOS) 30 #if defined(OS_CHROMEOS)
27 #include "chrome/browser/chromeos/internet_page_view.h" 31 #include "chrome/browser/chromeos/internet_page_view.h"
28 #include "chrome/browser/chromeos/system_page_view.h" 32 #include "chrome/browser/chromeos/system_page_view.h"
29 #endif 33 #endif
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 65
62 // The content page. 66 // The content page.
63 ContentPageGtk content_page_; 67 ContentPageGtk content_page_;
64 68
65 // The advanced (user data) page. 69 // The advanced (user data) page.
66 AdvancedPageGtk advanced_page_; 70 AdvancedPageGtk advanced_page_;
67 71
68 // The last page the user was on when they opened the Options window. 72 // The last page the user was on when they opened the Options window.
69 IntegerPrefMember last_selected_page_; 73 IntegerPrefMember last_selected_page_;
70 74
75 scoped_ptr<AccessibleWidgetHelper> accessibility_widget_helper_;
76
71 DISALLOW_COPY_AND_ASSIGN(OptionsWindowGtk); 77 DISALLOW_COPY_AND_ASSIGN(OptionsWindowGtk);
72 }; 78 };
73 79
74 // The singleton options window object. 80 // The singleton options window object.
75 static OptionsWindowGtk* options_window = NULL; 81 static OptionsWindowGtk* options_window = NULL;
76 82
77 /////////////////////////////////////////////////////////////////////////////// 83 ///////////////////////////////////////////////////////////////////////////////
78 // OptionsWindowGtk, public: 84 // OptionsWindowGtk, public:
79 85
80 OptionsWindowGtk::OptionsWindowGtk(Profile* profile) 86 OptionsWindowGtk::OptionsWindowGtk(Profile* profile)
81 // Always show preferences for the original profile. Most state when off 87 // Always show preferences for the original profile. Most state when off
82 // the record comes from the original profile, but we explicitly use 88 // the record comes from the original profile, but we explicitly use
83 // the original profile to avoid potential problems. 89 // the original profile to avoid potential problems.
84 : profile_(profile->GetOriginalProfile()), 90 : profile_(profile->GetOriginalProfile()),
85 general_page_(profile_), 91 general_page_(profile_),
86 content_page_(profile_), 92 content_page_(profile_),
87 advanced_page_(profile_) { 93 advanced_page_(profile_) {
94
88 // We don't need to observe changes in this value. 95 // We don't need to observe changes in this value.
89 last_selected_page_.Init(prefs::kOptionsWindowLastTabIndex, 96 last_selected_page_.Init(prefs::kOptionsWindowLastTabIndex,
90 g_browser_process->local_state(), NULL); 97 g_browser_process->local_state(), NULL);
91 98
92 dialog_ = gtk_dialog_new_with_buttons( 99 dialog_ = gtk_dialog_new_with_buttons(
93 l10n_util::GetStringFUTF8(IDS_OPTIONS_DIALOG_TITLE, 100 l10n_util::GetStringFUTF8(IDS_OPTIONS_DIALOG_TITLE,
94 WideToUTF16(l10n_util::GetString(IDS_PRODUCT_NAME))).c_str(), 101 WideToUTF16(l10n_util::GetString(IDS_PRODUCT_NAME))).c_str(),
95 // Prefs window is shared between all browser windows. 102 // Prefs window is shared between all browser windows.
96 NULL, 103 NULL,
97 // Non-modal. 104 // Non-modal.
98 GTK_DIALOG_NO_SEPARATOR, 105 GTK_DIALOG_NO_SEPARATOR,
99 GTK_STOCK_CLOSE, 106 GTK_STOCK_CLOSE,
100 GTK_RESPONSE_CLOSE, 107 GTK_RESPONSE_CLOSE,
101 NULL); 108 NULL);
102 gtk_window_set_default_size(GTK_WINDOW(dialog_), 500, -1); 109 gtk_window_set_default_size(GTK_WINDOW(dialog_), 500, -1);
103 // Allow browser windows to go in front of the options dialog in metacity. 110 // Allow browser windows to go in front of the options dialog in metacity.
104 gtk_window_set_type_hint(GTK_WINDOW(dialog_), GDK_WINDOW_TYPE_HINT_NORMAL); 111 gtk_window_set_type_hint(GTK_WINDOW(dialog_), GDK_WINDOW_TYPE_HINT_NORMAL);
105 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog_)->vbox), 112 gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(dialog_)->vbox),
106 gtk_util::kContentAreaSpacing); 113 gtk_util::kContentAreaSpacing);
107 114
115 accessibility_widget_helper_.reset(new AccessibleWidgetHelper(
116 dialog_, profile));
117
108 notebook_ = gtk_notebook_new(); 118 notebook_ = gtk_notebook_new();
109 119
110 #if defined(OS_CHROMEOS) 120 #if defined(OS_CHROMEOS)
111 gtk_notebook_append_page( 121 gtk_notebook_append_page(
112 GTK_NOTEBOOK(notebook_), 122 GTK_NOTEBOOK(notebook_),
113 (new chromeos::SystemPageView(profile_))->WrapInGtkWidget(), 123 (new chromeos::SystemPageView(profile_))->WrapInGtkWidget(),
114 gtk_label_new( 124 gtk_label_new(
115 l10n_util::GetStringUTF8(IDS_OPTIONS_SYSTEM_TAB_LABEL).c_str())); 125 l10n_util::GetStringUTF8(IDS_OPTIONS_SYSTEM_TAB_LABEL).c_str()));
116 126
117 gtk_notebook_append_page( 127 gtk_notebook_append_page(
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
241 MessageLoop::current()->DeleteSoon(FROM_HERE, window); 251 MessageLoop::current()->DeleteSoon(FROM_HERE, window);
242 } 252 }
243 253
244 /////////////////////////////////////////////////////////////////////////////// 254 ///////////////////////////////////////////////////////////////////////////////
245 // Factory/finder method: 255 // Factory/finder method:
246 256
247 void ShowOptionsWindow(OptionsPage page, 257 void ShowOptionsWindow(OptionsPage page,
248 OptionsGroup highlight_group, 258 OptionsGroup highlight_group,
249 Profile* profile) { 259 Profile* profile) {
250 DCHECK(profile); 260 DCHECK(profile);
261
251 // If there's already an existing options window, activate it and switch to 262 // If there's already an existing options window, activate it and switch to
252 // the specified page. 263 // the specified page.
253 if (!options_window) { 264 if (!options_window) {
265 // Creating and initializing a bunch of controls generates a bunch of
266 // spurious events as control values change. Temporarily suppress
267 // accessibility events until the window is created.
268 profile->PauseAccessibilityEvents();
269
270 // Create the options window.
254 options_window = new OptionsWindowGtk(profile); 271 options_window = new OptionsWindowGtk(profile);
272
273 // Resume accessibility events.
274 profile->ResumeAccessibilityEvents();
255 } 275 }
256 options_window->ShowOptionsPage(page, highlight_group); 276 options_window->ShowOptionsPage(page, highlight_group);
277
278 std::string name = l10n_util::GetStringFUTF8(
279 IDS_OPTIONS_DIALOG_TITLE,
280 WideToUTF16(l10n_util::GetString(IDS_PRODUCT_NAME)));
281 AccessibilityWindowInfo info(profile, name);
282
283 NotificationService::current()->Notify(
284 NotificationType::ACCESSIBILITY_WINDOW_OPENED,
285 Source<Profile>(profile),
286 Details<AccessibilityWindowInfo>(&info));
257 } 287 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/options/general_page_gtk.cc ('k') | chrome/browser/profile.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698