LibGUI: Make GUI::TabWidget::add_tab<T>() return a T&

Since the newly constructed sub-widget is owned by the TabWidget,
we can simply return a T& here. :^)
This commit is contained in:
Andreas Kling 2020-04-04 11:10:07 +02:00
parent 37af1d74cc
commit 2463a285ee
Notes: sideshowbarker 2024-07-19 07:57:36 +09:00
6 changed files with 41 additions and 41 deletions

View file

@ -55,14 +55,14 @@ PropertiesDialog::PropertiesDialog(GUI::FileSystemModel& model, String path, boo
auto& tab_widget = main_widget.add<GUI::TabWidget>();
auto general_tab = tab_widget.add_tab<GUI::Widget>("General");
general_tab->set_layout<GUI::VerticalBoxLayout>();
general_tab->layout()->set_margins({ 12, 8, 12, 8 });
general_tab->layout()->set_spacing(10);
auto& general_tab = tab_widget.add_tab<GUI::Widget>("General");
general_tab.set_layout<GUI::VerticalBoxLayout>();
general_tab.layout()->set_margins({ 12, 8, 12, 8 });
general_tab.layout()->set_spacing(10);
general_tab->layout()->add_spacer();
general_tab.layout()->add_spacer();
auto& file_container = general_tab->add<GUI::Widget>();
auto& file_container = general_tab.add<GUI::Widget>();
file_container.set_layout<GUI::HorizontalBoxLayout>();
file_container.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed);
file_container.layout()->set_spacing(20);
@ -129,7 +129,7 @@ PropertiesDialog::PropertiesDialog(GUI::FileSystemModel& model, String path, boo
make_permission_checkboxes(general_tab, { S_IRGRP, S_IWGRP, S_IXGRP }, "Group:", m_mode);
make_permission_checkboxes(general_tab, { S_IROTH, S_IWOTH, S_IXOTH }, "Others:", m_mode);
general_tab->layout()->add_spacer();
general_tab.layout()->add_spacer();
auto& button_widget = main_widget.add<GUI::Widget>();
button_widget.set_layout<GUI::HorizontalBoxLayout>();
@ -214,9 +214,9 @@ bool PropertiesDialog::apply_changes()
return true;
}
void PropertiesDialog::make_permission_checkboxes(NonnullRefPtr<GUI::Widget>& parent, PermissionMasks masks, String label_string, mode_t mode)
void PropertiesDialog::make_permission_checkboxes(GUI::Widget& parent, PermissionMasks masks, String label_string, mode_t mode)
{
auto& widget = parent->add<GUI::Widget>();
auto& widget = parent.add<GUI::Widget>();
widget.set_layout<GUI::HorizontalBoxLayout>();
widget.set_size_policy(GUI::SizePolicy::Fill, GUI::SizePolicy::Fixed);
widget.set_preferred_size(0, 16);

View file

@ -78,7 +78,7 @@ private:
GUI::Button& make_button(String, GUI::Widget& parent);
void make_divider(GUI::Widget& parent);
void make_property_value_pairs(const Vector<PropertyValuePair>& pairs, GUI::Widget& parent);
void make_permission_checkboxes(NonnullRefPtr<GUI::Widget>& parent, PermissionMasks, String label_string, mode_t mode);
void make_permission_checkboxes(GUI::Widget& parent, PermissionMasks, String label_string, mode_t mode);
void permission_changed(mode_t mask, bool set);
bool apply_changes();
void update();

View file

@ -122,9 +122,9 @@ int main(int argc, char** argv)
auto& tabwidget = keeper.add<GUI::TabWidget>();
auto process_container_splitter = tabwidget.add_tab<GUI::VerticalSplitter>("Processes");
auto& process_container_splitter = tabwidget.add_tab<GUI::VerticalSplitter>("Processes");
auto& process_table_container = process_container_splitter->add<GUI::Widget>();
auto& process_table_container = process_container_splitter.add<GUI::Widget>();
tabwidget.add_widget("Graphs", build_graphs_tab());
@ -228,18 +228,18 @@ int main(int argc, char** argv)
app.set_menubar(move(menubar));
auto& process_tab_widget = process_container_splitter->add<GUI::TabWidget>();
auto& process_tab_widget = process_container_splitter.add<GUI::TabWidget>();
auto memory_map_widget = process_tab_widget.add_tab<ProcessMemoryMapWidget>("Memory map");
auto open_files_widget = process_tab_widget.add_tab<ProcessFileDescriptorMapWidget>("Open files");
auto unveiled_paths_widget = process_tab_widget.add_tab<ProcessUnveiledPathsWidget>("Unveiled paths");
auto stacks_widget = process_tab_widget.add_tab<ProcessStacksWidget>("Stacks");
auto& memory_map_widget = process_tab_widget.add_tab<ProcessMemoryMapWidget>("Memory map");
auto& open_files_widget = process_tab_widget.add_tab<ProcessFileDescriptorMapWidget>("Open files");
auto& unveiled_paths_widget = process_tab_widget.add_tab<ProcessUnveiledPathsWidget>("Unveiled paths");
auto& stacks_widget = process_tab_widget.add_tab<ProcessStacksWidget>("Stacks");
process_table_view.on_process_selected = [&](pid_t pid) {
open_files_widget->set_pid(pid);
stacks_widget->set_pid(pid);
memory_map_widget->set_pid(pid);
unveiled_paths_widget->set_pid(pid);
open_files_widget.set_pid(pid);
stacks_widget.set_pid(pid);
memory_map_widget.set_pid(pid);
unveiled_paths_widget.set_pid(pid);
};
window->show();

View file

@ -438,7 +438,7 @@ int main(int argc, char** argv)
auto reveal_action_tab = [&](auto& widget) {
if (s_action_tab_widget->preferred_size().height() < 200)
s_action_tab_widget->set_preferred_size(0, 200);
s_action_tab_widget->set_active_widget(widget);
s_action_tab_widget->set_active_widget(&widget);
};
auto hide_action_tabs = [&] {
@ -454,8 +454,8 @@ int main(int argc, char** argv)
update_actions();
});
auto find_in_files_widget = s_action_tab_widget->add_tab<FindInFilesWidget>("Find in files");
auto terminal_wrapper = s_action_tab_widget->add_tab<TerminalWrapper>("Console");
auto& find_in_files_widget = s_action_tab_widget->add_tab<FindInFilesWidget>("Find in files");
auto& terminal_wrapper = s_action_tab_widget->add_tab<TerminalWrapper>("Console");
auto& locator = widget.add<Locator>();
@ -481,16 +481,16 @@ int main(int argc, char** argv)
auto edit_menu = GUI::Menu::construct("Edit");
edit_menu->add_action(GUI::Action::create("Find in files...", { Mod_Ctrl | Mod_Shift, Key_F }, Gfx::Bitmap::load_from_file("/res/icons/16x16/find.png"), [&](auto&) {
reveal_action_tab(find_in_files_widget);
find_in_files_widget->focus_textbox_and_select_all();
find_in_files_widget.focus_textbox_and_select_all();
}));
menubar->add_menu(move(edit_menu));
auto stop_action = GUI::Action::create("Stop", Gfx::Bitmap::load_from_file("/res/icons/16x16/stop.png"), [&](auto&) {
terminal_wrapper->kill_running_command();
terminal_wrapper.kill_running_command();
});
stop_action->set_enabled(false);
terminal_wrapper->on_command_exit = [&] {
terminal_wrapper.on_command_exit = [&] {
stop_action->set_enabled(false);
};

View file

@ -107,21 +107,21 @@ void ColorPicker::build_ui()
auto& tab_widget = root_container.add<GUI::TabWidget>();
auto tab_palette = tab_widget.add_tab<Widget>("Palette");
tab_palette->set_size_policy(SizePolicy::Fill, SizePolicy::Fill);
tab_palette->set_layout<VerticalBoxLayout>();
tab_palette->layout()->set_margins({ 4, 4, 4, 4 });
tab_palette->layout()->set_spacing(4);
auto& tab_palette = tab_widget.add_tab<Widget>("Palette");
tab_palette.set_size_policy(SizePolicy::Fill, SizePolicy::Fill);
tab_palette.set_layout<VerticalBoxLayout>();
tab_palette.layout()->set_margins({ 4, 4, 4, 4 });
tab_palette.layout()->set_spacing(4);
build_ui_palette(*tab_palette);
build_ui_palette(tab_palette);
auto tab_custom_color = tab_widget.add_tab<Widget>("Custom Color");
tab_custom_color->set_size_policy(SizePolicy::Fill, SizePolicy::Fill);
tab_custom_color->set_layout<VerticalBoxLayout>();
tab_custom_color->layout()->set_margins({ 4, 4, 4, 4 });
tab_custom_color->layout()->set_spacing(4);
auto& tab_custom_color = tab_widget.add_tab<Widget>("Custom Color");
tab_custom_color.set_size_policy(SizePolicy::Fill, SizePolicy::Fill);
tab_custom_color.set_layout<VerticalBoxLayout>();
tab_custom_color.layout()->set_margins({ 4, 4, 4, 4 });
tab_custom_color.layout()->set_spacing(4);
build_ui_custom(*tab_custom_color);
build_ui_custom(tab_custom_color);
auto& button_container = root_container.add<Widget>();
button_container.set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);

View file

@ -55,11 +55,11 @@ public:
void add_widget(const StringView&, Widget&);
template<class T, class... Args>
inline NonnullRefPtr<T> add_tab(const StringView& title, Args&&... args)
T& add_tab(const StringView& title, Args&&... args)
{
auto t = T::construct(forward<Args>(args)...);
add_widget(title, *t);
return t;
return *t;
}
protected: