Skip to content

Commit 0440e3a

Browse files
committed
helium/ui/layout: add ui layout options to main browser context menu
1 parent cb05352 commit 0440e3a

File tree

2 files changed

+248
-0
lines changed

2 files changed

+248
-0
lines changed
Lines changed: 247 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,247 @@
1+
--- a/chrome/app/chrome_command_ids.h
2+
+++ b/chrome/app/chrome_command_ids.h
3+
@@ -94,15 +94,10 @@
4+
5+
// Helium commands
6+
#define IDC_COPY_OR_INSPECT_SHORTCUT 34080
7+
-
8+
-#if BUILDFLAG(IS_CHROMEOS)
9+
-// Move window to other user commands
10+
-#define IDC_VISIT_DESKTOP_OF_LRU_USER_3 34081
11+
-#define IDC_VISIT_DESKTOP_OF_LRU_USER_4 34082
12+
-#define IDC_VISIT_DESKTOP_OF_LRU_USER_5 34083
13+
-#define IDC_VISIT_DESKTOP_OF_LRU_USER_NEXT IDC_VISIT_DESKTOP_OF_LRU_USER_2
14+
-#define IDC_VISIT_DESKTOP_OF_LRU_USER_LAST IDC_VISIT_DESKTOP_OF_LRU_USER_5
15+
-#endif
16+
+#define IDC_BROWSER_LAYOUT_MENU 34081
17+
+#define IDC_BROWSER_LAYOUT_HORIZONTAL 34082
18+
+#define IDC_BROWSER_LAYOUT_COMPACT 34083
19+
+#define IDC_BROWSER_LAYOUT_VERTICAL 34084
20+
21+
// Tab group Commands
22+
#define IDC_ADD_NEW_TAB_TO_GROUP 34100
23+
--- a/chrome/app/generated_resources.grd
24+
+++ b/chrome/app/generated_resources.grd
25+
@@ -10383,6 +10383,39 @@ Keep your key file in a safe place. You
26+
Create split view
27+
</message>
28+
29+
+ <!-- Helium Browser Layout Strings -->
30+
+ <if expr="use_titlecase">
31+
+ <then>
32+
+ <message name="IDS_BROWSER_LAYOUT_MENU" desc="In Title Case: The submenu for browser layout options.">
33+
+ Browser Layout
34+
+ </message>
35+
+ <message name="IDS_BROWSER_LAYOUT_HORIZONTAL" desc="In Title Case: Option for horizontal layout.">
36+
+ Traditional
37+
+ </message>
38+
+ <message name="IDS_BROWSER_LAYOUT_COMPACT" desc="In Title Case: Option for compact layout.">
39+
+ Compact
40+
+ </message>
41+
+ <message name="IDS_BROWSER_LAYOUT_VERTICAL" desc="In Title Case: Option for vertical layout.">
42+
+ Vertical (beta)
43+
+ </message>
44+
+ </then>
45+
+ <else>
46+
+ <message name="IDS_BROWSER_LAYOUT_MENU" desc="The submenu for browser layout options.">
47+
+ Browser layout
48+
+ </message>
49+
+ <message name="IDS_BROWSER_LAYOUT_HORIZONTAL" desc="Option for horizontal layout.">
50+
+ Traditional
51+
+ </message>
52+
+ <message name="IDS_BROWSER_LAYOUT_COMPACT" desc="Option for compact layout.">
53+
+ Compact
54+
+ </message>
55+
+ <message name="IDS_BROWSER_LAYOUT_VERTICAL" desc="Option for vertical layout.">
56+
+ Vertical (beta)
57+
+ </message>
58+
+ </else>
59+
+ </if>
60+
+ <!-- /Helium Browser Layout Strings -->
61+
+
62+
<!-- Vertical Tab Strings -->
63+
<if expr="use_titlecase">
64+
<then>
65+
--- a/chrome/browser/ui/browser_commands.h
66+
+++ b/chrome/browser/ui/browser_commands.h
67+
@@ -15,6 +15,7 @@
68+
#include "chrome/browser/devtools/devtools_toggle_action.h"
69+
#include "chrome/browser/task_manager/task_manager_metrics_recorder.h"
70+
#include "chrome/browser/ui/chrome_pages.h"
71+
+#include "chrome/browser/ui/helium/helium_layout_state_controller.h"
72+
#include "chrome/browser/ui/tabs/tab_enums.h"
73+
#include "chrome/browser/ui/tabs/tab_strip_model_delegate.h"
74+
#include "chrome/browser/ui/tabs/tab_strip_user_gesture_details.h"
75+
@@ -260,6 +261,7 @@ void ShowTabSearch(BrowserWindowInterfac
76+
void CloseTabSearch(Browser* browser);
77+
void ToggleContextualTasksSidePanel(BrowserWindowInterface* browser);
78+
void ToggleVerticalTabs(Browser* browser);
79+
+void SetBrowserLayout(Browser* browser, HeliumLayoutType layout);
80+
void ShowTabDeclutter(Browser* browser);
81+
bool CanCloseFind(Browser* browser);
82+
void CloseFind(Browser* browser);
83+
--- a/chrome/browser/ui/browser_commands.cc
84+
+++ b/chrome/browser/ui/browser_commands.cc
85+
@@ -80,6 +80,7 @@
86+
#include "chrome/browser/ui/exclusive_access/fullscreen_controller.h"
87+
#include "chrome/browser/ui/find_bar/find_bar.h"
88+
#include "chrome/browser/ui/find_bar/find_bar_controller.h"
89+
+#include "chrome/browser/ui/helium/helium_layout_state_controller.h"
90+
#include "chrome/browser/ui/intent_picker_tab_helper.h"
91+
#include "chrome/browser/ui/lens/lens_search_controller.h"
92+
#include "chrome/browser/ui/location_bar/location_bar.h"
93+
@@ -2225,6 +2226,14 @@ void ToggleVerticalTabs(Browser* browser
94+
controller->SetVerticalTabsEnabled(!initial_tab_orientation);
95+
}
96+
97+
+void SetBrowserLayout(Browser* browser, HeliumLayoutType layout) {
98+
+ auto* toolbar_controller =
99+
+ HeliumLayoutStateController::From(browser);
100+
+ if (toolbar_controller) {
101+
+ toolbar_controller->SetBrowserLayout(layout);
102+
+ }
103+
+}
104+
+
105+
void ShowTabDeclutter(Browser* browser) {
106+
browser->window()->CreateTabSearchBubble(
107+
tab_search::mojom::TabSearchSection::kOrganize,
108+
--- a/chrome/browser/ui/browser_command_controller.cc
109+
+++ b/chrome/browser/ui/browser_command_controller.cc
110+
@@ -588,6 +588,15 @@ bool BrowserCommandController::ExecuteCo
111+
case IDC_TOGGLE_VERTICAL_TABS:
112+
ToggleVerticalTabs(browser_);
113+
break;
114+
+ case IDC_BROWSER_LAYOUT_HORIZONTAL:
115+
+ SetBrowserLayout(browser_, HeliumLayoutType::kHorizontal);
116+
+ break;
117+
+ case IDC_BROWSER_LAYOUT_COMPACT:
118+
+ SetBrowserLayout(browser_, HeliumLayoutType::kToolbar);
119+
+ break;
120+
+ case IDC_BROWSER_LAYOUT_VERTICAL:
121+
+ SetBrowserLayout(browser_, HeliumLayoutType::kVertical);
122+
+ break;
123+
124+
// Window management commands
125+
case IDC_NEW_WINDOW:
126+
@@ -1498,6 +1507,12 @@ void BrowserCommandController::InitComma
127+
command_updater_.UpdateCommandEnabled(IDC_ORGANIZE_TABS, true);
128+
command_updater_.UpdateCommandEnabled(IDC_DECLUTTER_TABS, true);
129+
command_updater_.UpdateCommandEnabled(IDC_TOGGLE_VERTICAL_TABS, true);
130+
+
131+
+ // Helium layout menu
132+
+ command_updater_.UpdateCommandEnabled(IDC_BROWSER_LAYOUT_MENU, true);
133+
+ command_updater_.UpdateCommandEnabled(IDC_BROWSER_LAYOUT_HORIZONTAL, true);
134+
+ command_updater_.UpdateCommandEnabled(IDC_BROWSER_LAYOUT_COMPACT, true);
135+
+ command_updater_.UpdateCommandEnabled(IDC_BROWSER_LAYOUT_VERTICAL, true);
136+
#if BUILDFLAG(IS_CHROMEOS)
137+
command_updater_.UpdateCommandEnabled(IDC_TOGGLE_MULTITASK_MENU, true);
138+
command_updater_.UpdateCommandEnabled(IDC_MINIMIZE_WINDOW, true);
139+
--- a/chrome/browser/ui/views/frame/system_menu_model_builder.h
140+
+++ b/chrome/browser/ui/views/frame/system_menu_model_builder.h
141+
@@ -60,6 +60,7 @@ class SystemMenuModelBuilder {
142+
SystemMenuModelDelegate menu_delegate_;
143+
std::unique_ptr<ui::MenuModel> menu_model_;
144+
std::unique_ptr<ui::SimpleMenuModel> zoom_menu_contents_;
145+
+ std::unique_ptr<ui::SimpleMenuModel> browser_layout_menu_contents_;
146+
#if BUILDFLAG(IS_CHROMEOS)
147+
std::unique_ptr<chromeos::MoveToDesksMenuModel> move_to_desks_model_;
148+
#endif
149+
--- a/chrome/browser/ui/views/frame/system_menu_model_builder.cc
150+
+++ b/chrome/browser/ui/views/frame/system_menu_model_builder.cc
151+
@@ -12,7 +12,6 @@
152+
#include "chrome/browser/ui/browser_commands.h"
153+
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
154+
#include "chrome/browser/ui/tabs/features.h"
155+
-#include "chrome/browser/ui/tabs/vertical_tab_strip_state_controller.h"
156+
#include "chrome/browser/ui/toolbar/app_menu_model.h"
157+
#include "chrome/browser/ui/ui_features.h"
158+
#include "chrome/browser/ui/web_applications/app_browser_controller.h"
159+
@@ -48,9 +47,6 @@
160+
#include "chrome/browser/glic/public/glic_enabling.h"
161+
#endif
162+
163+
-DEFINE_CLASS_ELEMENT_IDENTIFIER_VALUE(SystemMenuModelBuilder,
164+
- kToggleVerticalTabsElementId);
165+
-
166+
SystemMenuModelBuilder::SystemMenuModelBuilder(
167+
ui::AcceleratorProvider* provider,
168+
Browser* browser)
169+
@@ -100,6 +96,21 @@ void SystemMenuModelBuilder::BuildSystem
170+
171+
if (!browser()->profile()->IsOffTheRecord()) {
172+
model->AddSeparator(ui::NORMAL_SEPARATOR);
173+
+
174+
+ browser_layout_menu_contents_ =
175+
+ std::make_unique<ui::SimpleMenuModel>(&menu_delegate_);
176+
+
177+
+ browser_layout_menu_contents_->AddCheckItemWithStringId(
178+
+ IDC_BROWSER_LAYOUT_HORIZONTAL, IDS_BROWSER_LAYOUT_HORIZONTAL);
179+
+ browser_layout_menu_contents_->AddCheckItemWithStringId(
180+
+ IDC_BROWSER_LAYOUT_COMPACT, IDS_BROWSER_LAYOUT_COMPACT);
181+
+ browser_layout_menu_contents_->AddCheckItemWithStringId(
182+
+ IDC_BROWSER_LAYOUT_VERTICAL, IDS_BROWSER_LAYOUT_VERTICAL);
183+
+
184+
+ model->AddSubMenuWithStringId(IDC_BROWSER_LAYOUT_MENU,
185+
+ IDS_BROWSER_LAYOUT_MENU,
186+
+ browser_layout_menu_contents_.get());
187+
+
188+
model->AddItemWithStringId(IDC_SHOW_CUSTOMIZE_CHROME_SIDE_PANEL,
189+
IDS_SHOW_CUSTOMIZE_CHROME_SIDE_PANEL);
190+
}
191+
@@ -116,20 +127,6 @@ void SystemMenuModelBuilder::BuildSystem
192+
#endif // BUILDFLAG(IS_WIN)
193+
#endif // BUILDFLAG(ENABLE_GLIC)
194+
195+
- if (auto* controller =
196+
- tabs::VerticalTabStripStateController::From(browser())) {
197+
- model->AddSeparator(ui::NORMAL_SEPARATOR);
198+
- if (controller->ShouldDisplayVerticalTabs()) {
199+
- model->AddItemWithStringId(IDC_TOGGLE_VERTICAL_TABS,
200+
- IDS_SWITCH_TO_HORIZONTAL_TAB);
201+
- } else {
202+
- model->AddItemWithStringId(IDC_TOGGLE_VERTICAL_TABS,
203+
- IDS_SWITCH_TO_VERTICAL_TAB);
204+
- }
205+
- model->SetElementIdentifierAt(model->GetItemCount() - 1,
206+
- kToggleVerticalTabsElementId);
207+
- }
208+
-
209+
if (chrome::CanOpenTaskManager()) {
210+
model->AddSeparator(ui::NORMAL_SEPARATOR);
211+
model->AddItemWithStringId(IDC_TASK_MANAGER_CONTEXT_MENU, IDS_TASK_MANAGER);
212+
--- a/chrome/browser/ui/views/frame/system_menu_model_delegate.cc
213+
+++ b/chrome/browser/ui/views/frame/system_menu_model_delegate.cc
214+
@@ -13,6 +13,7 @@
215+
#include "chrome/browser/ui/browser_commands.h"
216+
#include "chrome/browser/ui/browser_window.h"
217+
#include "chrome/browser/ui/browser_window/public/browser_window_features.h"
218+
+#include "chrome/browser/ui/helium/helium_layout_state_controller.h"
219+
#include "chrome/browser/ui/tabs/vertical_tab_strip_state_controller.h"
220+
#include "chrome/grit/generated_resources.h"
221+
#include "components/prefs/pref_service.h"
222+
@@ -47,6 +48,25 @@ bool SystemMenuModelDelegate::IsCommandI
223+
return !prefs->GetBoolean(prefs::kUseCustomChromeFrame);
224+
}
225+
#endif
226+
+
227+
+ if (command_id == IDC_BROWSER_LAYOUT_HORIZONTAL ||
228+
+ command_id == IDC_BROWSER_LAYOUT_COMPACT ||
229+
+ command_id == IDC_BROWSER_LAYOUT_VERTICAL) {
230+
+ auto* layout_controller =
231+
+ HeliumLayoutStateController::From(browser_);
232+
+ if (layout_controller) {
233+
+ auto current_layout = layout_controller->GetBrowserLayout();
234+
+ switch (command_id) {
235+
+ case IDC_BROWSER_LAYOUT_HORIZONTAL:
236+
+ return current_layout == HeliumLayoutType::kHorizontal;
237+
+ case IDC_BROWSER_LAYOUT_COMPACT:
238+
+ return current_layout == HeliumLayoutType::kToolbar;
239+
+ case IDC_BROWSER_LAYOUT_VERTICAL:
240+
+ return current_layout == HeliumLayoutType::kVertical;
241+
+ }
242+
+ }
243+
+ }
244+
+
245+
return false;
246+
}
247+

patches/series

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@ helium/ui/remove-zoom-action.patch
271271

272272
helium/ui/layout/core.patch
273273
helium/ui/layout/settings.patch
274+
helium/ui/layout/context-menu.patch
274275
helium/ui/layout/compact.patch
275276
helium/ui/layout/vertical.patch
276277

0 commit comments

Comments
 (0)