mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 16:52:43 +00:00 
			
		
		
		
	LibGUI+Userland: Stop returning Layout from Widget::(try_)set_layout()
				
					
				
			Nobody uses this return value any more. It also lets us remove a whole bunch of `(void)` casts. :^)
This commit is contained in:
		
							parent
							
								
									77ad0fdb07
								
							
						
					
					
						commit
						6b66e39df4
					
				
					 20 changed files with 47 additions and 48 deletions
				
			
		|  | @ -23,7 +23,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); |     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); | ||||||
|     main_widget->set_fill_with_background_color(true); |     main_widget->set_fill_with_background_color(true); | ||||||
| 
 | 
 | ||||||
|     (void)TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(16)); |     TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(16)); | ||||||
| 
 | 
 | ||||||
|     auto button = TRY(main_widget->try_add<GUI::Button>("Click me!")); |     auto button = TRY(main_widget->try_add<GUI::Button>("Click me!")); | ||||||
|     button->on_click = [&](auto) { |     button->on_click = [&](auto) { | ||||||
|  |  | ||||||
|  | @ -216,7 +216,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     auto& tab_widget = *widget->find_descendant_of_type_named<GUI::TabWidget>("tab_widget"); |     auto& tab_widget = *widget->find_descendant_of_type_named<GUI::TabWidget>("tab_widget"); | ||||||
| 
 | 
 | ||||||
|     auto backtrace_tab = TRY(tab_widget.try_add_tab<GUI::Widget>("Backtrace")); |     auto backtrace_tab = TRY(tab_widget.try_add_tab<GUI::Widget>("Backtrace")); | ||||||
|     (void)TRY(backtrace_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(backtrace_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto backtrace_label = TRY(backtrace_tab->try_add<GUI::Label>("A backtrace for each thread alive during the crash is listed below:")); |     auto backtrace_label = TRY(backtrace_tab->try_add<GUI::Label>("A backtrace for each thread alive during the crash is listed below:")); | ||||||
|     backtrace_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |     backtrace_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  | @ -236,7 +236,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     cpu_registers_tab_widget->set_tab_position(GUI::TabWidget::TabPosition::Bottom); |     cpu_registers_tab_widget->set_tab_position(GUI::TabWidget::TabPosition::Bottom); | ||||||
| 
 | 
 | ||||||
|     auto environment_tab = TRY(tab_widget.try_add_tab<GUI::Widget>("Environment")); |     auto environment_tab = TRY(tab_widget.try_add_tab<GUI::Widget>("Environment")); | ||||||
|     (void)TRY(environment_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(environment_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto environment_text_editor = TRY(environment_tab->try_add<GUI::TextEditor>()); |     auto environment_text_editor = TRY(environment_tab->try_add<GUI::TextEditor>()); | ||||||
|     environment_text_editor->set_text(DeprecatedString::join('\n', environment)); |     environment_text_editor->set_text(DeprecatedString::join('\n', environment)); | ||||||
|  | @ -245,7 +245,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     environment_text_editor->set_should_hide_unnecessary_scrollbars(true); |     environment_text_editor->set_should_hide_unnecessary_scrollbars(true); | ||||||
| 
 | 
 | ||||||
|     auto memory_regions_tab = TRY(tab_widget.try_add_tab<GUI::Widget>("Memory Regions")); |     auto memory_regions_tab = TRY(tab_widget.try_add_tab<GUI::Widget>("Memory Regions")); | ||||||
|     (void)TRY(memory_regions_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(memory_regions_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto memory_regions_text_editor = TRY(memory_regions_tab->try_add<GUI::TextEditor>()); |     auto memory_regions_text_editor = TRY(memory_regions_tab->try_add<GUI::TextEditor>()); | ||||||
|     memory_regions_text_editor->set_text(DeprecatedString::join('\n', memory_regions)); |     memory_regions_text_editor->set_text(DeprecatedString::join('\n', memory_regions)); | ||||||
|  | @ -303,7 +303,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|         [&](auto results) -> ErrorOr<void> { |         [&](auto results) -> ErrorOr<void> { | ||||||
|             for (auto& backtrace : results.thread_backtraces) { |             for (auto& backtrace : results.thread_backtraces) { | ||||||
|                 auto container = TRY(backtrace_tab_widget->try_add_tab<GUI::Widget>(backtrace.title)); |                 auto container = TRY(backtrace_tab_widget->try_add_tab<GUI::Widget>(backtrace.title)); | ||||||
|                 (void)TRY(container->template try_set_layout<GUI::VerticalBoxLayout>(4)); |                 TRY(container->template try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
|                 auto backtrace_text_editor = TRY(container->template try_add<GUI::TextEditor>()); |                 auto backtrace_text_editor = TRY(container->template try_add<GUI::TextEditor>()); | ||||||
|                 backtrace_text_editor->set_text(backtrace.text); |                 backtrace_text_editor->set_text(backtrace.text); | ||||||
|                 backtrace_text_editor->set_mode(GUI::TextEditor::Mode::ReadOnly); |                 backtrace_text_editor->set_mode(GUI::TextEditor::Mode::ReadOnly); | ||||||
|  | @ -314,7 +314,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
| 
 | 
 | ||||||
|             for (auto& cpu_registers : results.thread_cpu_registers) { |             for (auto& cpu_registers : results.thread_cpu_registers) { | ||||||
|                 auto container = TRY(cpu_registers_tab_widget->try_add_tab<GUI::Widget>(cpu_registers.title)); |                 auto container = TRY(cpu_registers_tab_widget->try_add_tab<GUI::Widget>(cpu_registers.title)); | ||||||
|                 (void)TRY(container->template try_set_layout<GUI::VerticalBoxLayout>(4)); |                 TRY(container->template try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
|                 auto cpu_registers_text_editor = TRY(container->template try_add<GUI::TextEditor>()); |                 auto cpu_registers_text_editor = TRY(container->template try_add<GUI::TextEditor>()); | ||||||
|                 cpu_registers_text_editor->set_text(cpu_registers.text); |                 cpu_registers_text_editor->set_text(cpu_registers.text); | ||||||
|                 cpu_registers_text_editor->set_mode(GUI::TextEditor::Mode::ReadOnly); |                 cpu_registers_text_editor->set_mode(GUI::TextEditor::Mode::ReadOnly); | ||||||
|  |  | ||||||
|  | @ -53,7 +53,7 @@ PropertiesWindow::PropertiesWindow(DeprecatedString const& path, Window* parent_ | ||||||
| ErrorOr<void> PropertiesWindow::create_widgets(bool disable_rename) | ErrorOr<void> PropertiesWindow::create_widgets(bool disable_rename) | ||||||
| { | { | ||||||
|     auto main_widget = TRY(set_main_widget<GUI::Widget>()); |     auto main_widget = TRY(set_main_widget<GUI::Widget>()); | ||||||
|     (void)TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(4, 6)); |     TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(4, 6)); | ||||||
|     main_widget->set_fill_with_background_color(true); |     main_widget->set_fill_with_background_color(true); | ||||||
| 
 | 
 | ||||||
|     auto tab_widget = TRY(main_widget->try_add<GUI::TabWidget>()); |     auto tab_widget = TRY(main_widget->try_add<GUI::TabWidget>()); | ||||||
|  | @ -149,7 +149,7 @@ ErrorOr<void> PropertiesWindow::create_widgets(bool disable_rename) | ||||||
|     TRY(setup_permission_checkboxes(*others_read, *others_write, *others_execute, { S_IROTH, S_IWOTH, S_IXOTH }, m_mode)); |     TRY(setup_permission_checkboxes(*others_read, *others_write, *others_execute, { S_IROTH, S_IWOTH, S_IXOTH }, m_mode)); | ||||||
| 
 | 
 | ||||||
|     auto button_widget = TRY(main_widget->try_add<GUI::Widget>()); |     auto button_widget = TRY(main_widget->try_add<GUI::Widget>()); | ||||||
|     (void)TRY(button_widget->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 5)); |     TRY(button_widget->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 5)); | ||||||
|     button_widget->set_fixed_height(22); |     button_widget->set_fixed_height(22); | ||||||
| 
 | 
 | ||||||
|     TRY(button_widget->add_spacer()); |     TRY(button_widget->add_spacer()); | ||||||
|  |  | ||||||
|  | @ -358,7 +358,7 @@ ErrorOr<int> run_in_desktop_mode() | ||||||
|     window->set_has_alpha_channel(true); |     window->set_has_alpha_channel(true); | ||||||
| 
 | 
 | ||||||
|     auto desktop_widget = TRY(window->set_main_widget<FileManager::DesktopWidget>()); |     auto desktop_widget = TRY(window->set_main_widget<FileManager::DesktopWidget>()); | ||||||
|     (void)TRY(desktop_widget->try_set_layout<GUI::VerticalBoxLayout>()); |     TRY(desktop_widget->try_set_layout<GUI::VerticalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|     auto directory_view = TRY(desktop_widget->try_add<DirectoryView>(DirectoryView::Mode::Desktop)); |     auto directory_view = TRY(desktop_widget->try_add<DirectoryView>(DirectoryView::Mode::Desktop)); | ||||||
|     directory_view->set_name("directory_view"); |     directory_view->set_name("directory_view"); | ||||||
|  |  | ||||||
|  | @ -34,7 +34,7 @@ MainWidget::MainWidget(TrackManager& track_manager, AudioPlayerLoop& loop) | ||||||
| 
 | 
 | ||||||
| ErrorOr<void> MainWidget::initialize() | ErrorOr<void> MainWidget::initialize() | ||||||
| { | { | ||||||
|     (void)TRY(try_set_layout<GUI::VerticalBoxLayout>(2, 2)); |     TRY(try_set_layout<GUI::VerticalBoxLayout>(2, 2)); | ||||||
|     set_fill_with_background_color(true); |     set_fill_with_background_color(true); | ||||||
| 
 | 
 | ||||||
|     m_wave_widget = TRY(try_add<WaveWidget>(m_track_manager)); |     m_wave_widget = TRY(try_add<WaveWidget>(m_track_manager)); | ||||||
|  | @ -49,7 +49,7 @@ ErrorOr<void> MainWidget::initialize() | ||||||
|     m_player_widget = TRY(try_add<PlayerWidget>(m_track_manager, m_audio_loop)); |     m_player_widget = TRY(try_add<PlayerWidget>(m_track_manager, m_audio_loop)); | ||||||
| 
 | 
 | ||||||
|     m_keys_and_knobs_container = TRY(try_add<GUI::Widget>()); |     m_keys_and_knobs_container = TRY(try_add<GUI::Widget>()); | ||||||
|     (void)TRY(m_keys_and_knobs_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 2)); |     TRY(m_keys_and_knobs_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 2)); | ||||||
|     m_keys_and_knobs_container->set_fixed_height(130); |     m_keys_and_knobs_container->set_fixed_height(130); | ||||||
|     m_keys_and_knobs_container->set_fill_with_background_color(true); |     m_keys_and_knobs_container->set_fill_with_background_color(true); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -39,7 +39,7 @@ PlayerWidget::PlayerWidget(TrackManager& manager, AudioPlayerLoop& loop) | ||||||
| 
 | 
 | ||||||
| ErrorOr<void> PlayerWidget::initialize() | ErrorOr<void> PlayerWidget::initialize() | ||||||
| { | { | ||||||
|     (void)TRY(try_set_layout<GUI::HorizontalBoxLayout>()); |     TRY(try_set_layout<GUI::HorizontalBoxLayout>()); | ||||||
|     set_fill_with_background_color(true); |     set_fill_with_background_color(true); | ||||||
|     TRY(m_track_number_choices.try_append("1")); |     TRY(m_track_number_choices.try_append("1")); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -38,7 +38,7 @@ ErrorOr<RefPtr<GUI::Widget>> Bloom::get_settings_widget() | ||||||
| { | { | ||||||
|     if (!m_settings_widget) { |     if (!m_settings_widget) { | ||||||
|         auto settings_widget = TRY(GUI::Widget::try_create()); |         auto settings_widget = TRY(GUI::Widget::try_create()); | ||||||
|         (void)TRY(settings_widget->try_set_layout<GUI::VerticalBoxLayout>()); |         TRY(settings_widget->try_set_layout<GUI::VerticalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|         auto name_label = TRY(settings_widget->try_add<GUI::Label>("Bloom Filter")); |         auto name_label = TRY(settings_widget->try_add<GUI::Label>("Bloom Filter")); | ||||||
|         name_label->set_font_weight(Gfx::FontWeight::Bold); |         name_label->set_font_weight(Gfx::FontWeight::Bold); | ||||||
|  | @ -47,7 +47,7 @@ ErrorOr<RefPtr<GUI::Widget>> Bloom::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         auto luma_lower_container = TRY(settings_widget->try_add<GUI::Widget>()); |         auto luma_lower_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         luma_lower_container->set_fixed_height(50); |         luma_lower_container->set_fixed_height(50); | ||||||
|         (void)TRY(luma_lower_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(luma_lower_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         auto luma_lower_label = TRY(luma_lower_container->try_add<GUI::Label>("Luma lower bound:")); |         auto luma_lower_label = TRY(luma_lower_container->try_add<GUI::Label>("Luma lower bound:")); | ||||||
|         luma_lower_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         luma_lower_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  | @ -63,7 +63,7 @@ ErrorOr<RefPtr<GUI::Widget>> Bloom::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         auto radius_container = TRY(settings_widget->try_add<GUI::Widget>()); |         auto radius_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         radius_container->set_fixed_height(50); |         radius_container->set_fixed_height(50); | ||||||
|         (void)TRY(radius_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(radius_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         auto radius_label = TRY(radius_container->try_add<GUI::Label>("Blur Radius:")); |         auto radius_label = TRY(radius_container->try_add<GUI::Label>("Blur Radius:")); | ||||||
|         radius_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         radius_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  |  | ||||||
|  | @ -40,7 +40,7 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
| { | { | ||||||
|     if (!m_settings_widget) { |     if (!m_settings_widget) { | ||||||
|         auto settings_widget = TRY(GUI::Widget::try_create()); |         auto settings_widget = TRY(GUI::Widget::try_create()); | ||||||
|         (void)TRY(settings_widget->try_set_layout<GUI::VerticalBoxLayout>()); |         TRY(settings_widget->try_set_layout<GUI::VerticalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|         auto name_label = TRY(settings_widget->try_add<GUI::Label>("Fast Box Blur Filter")); |         auto name_label = TRY(settings_widget->try_add<GUI::Label>("Fast Box Blur Filter")); | ||||||
|         name_label->set_font_weight(Gfx::FontWeight::Bold); |         name_label->set_font_weight(Gfx::FontWeight::Bold); | ||||||
|  | @ -86,7 +86,7 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         m_radius_container = TRY(settings_widget->try_add<GUI::Widget>()); |         m_radius_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         m_radius_container->set_fixed_height(20); |         m_radius_container->set_fixed_height(20); | ||||||
|         (void)TRY(m_radius_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(m_radius_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         auto radius_label = TRY(m_radius_container->try_add<GUI::Label>("Radius:")); |         auto radius_label = TRY(m_radius_container->try_add<GUI::Label>("Radius:")); | ||||||
|         radius_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         radius_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  | @ -103,7 +103,7 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
|         m_asymmetric_radius_container = TRY(settings_widget->try_add<GUI::Widget>()); |         m_asymmetric_radius_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         m_asymmetric_radius_container->set_visible(false); |         m_asymmetric_radius_container->set_visible(false); | ||||||
|         m_asymmetric_radius_container->set_fixed_height(50); |         m_asymmetric_radius_container->set_fixed_height(50); | ||||||
|         (void)TRY(m_asymmetric_radius_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(m_asymmetric_radius_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         auto radius_x_container = TRY(m_asymmetric_radius_container->try_add<GUI::Widget>()); |         auto radius_x_container = TRY(m_asymmetric_radius_container->try_add<GUI::Widget>()); | ||||||
|         radius_x_container->set_fixed_height(20); |         radius_x_container->set_fixed_height(20); | ||||||
|  | @ -123,7 +123,7 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         auto radius_y_container = TRY(m_asymmetric_radius_container->try_add<GUI::Widget>()); |         auto radius_y_container = TRY(m_asymmetric_radius_container->try_add<GUI::Widget>()); | ||||||
|         radius_y_container->set_fixed_height(20); |         radius_y_container->set_fixed_height(20); | ||||||
|         (void)TRY(radius_y_container->try_set_layout<GUI::HorizontalBoxLayout>()); |         TRY(radius_y_container->try_set_layout<GUI::HorizontalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|         auto radius_y_label = TRY(radius_y_container->try_add<GUI::Label>("Radius Y:")); |         auto radius_y_label = TRY(radius_y_container->try_add<GUI::Label>("Radius Y:")); | ||||||
|         radius_y_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         radius_y_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  | @ -140,11 +140,11 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
|         m_vector_container = TRY(settings_widget->try_add<GUI::Widget>()); |         m_vector_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         m_vector_container->set_visible(false); |         m_vector_container->set_visible(false); | ||||||
|         m_vector_container->set_fixed_height(50); |         m_vector_container->set_fixed_height(50); | ||||||
|         (void)TRY(m_vector_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(m_vector_container->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         auto angle_container = TRY(m_vector_container->try_add<GUI::Widget>()); |         auto angle_container = TRY(m_vector_container->try_add<GUI::Widget>()); | ||||||
|         angle_container->set_fixed_height(20); |         angle_container->set_fixed_height(20); | ||||||
|         (void)TRY(angle_container->try_set_layout<GUI::HorizontalBoxLayout>()); |         TRY(angle_container->try_set_layout<GUI::HorizontalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|         auto angle_label = TRY(angle_container->try_add<GUI::Label>("Angle:")); |         auto angle_label = TRY(angle_container->try_add<GUI::Label>("Angle:")); | ||||||
|         angle_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         angle_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  | @ -160,7 +160,7 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         auto magnitude_container = TRY(m_vector_container->try_add<GUI::Widget>()); |         auto magnitude_container = TRY(m_vector_container->try_add<GUI::Widget>()); | ||||||
|         magnitude_container->set_fixed_height(20); |         magnitude_container->set_fixed_height(20); | ||||||
|         (void)TRY(magnitude_container->try_set_layout<GUI::HorizontalBoxLayout>()); |         TRY(magnitude_container->try_set_layout<GUI::HorizontalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|         auto magnitude_label = TRY(magnitude_container->try_add<GUI::Label>("Magnitude:")); |         auto magnitude_label = TRY(magnitude_container->try_add<GUI::Label>("Magnitude:")); | ||||||
|         magnitude_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         magnitude_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  | @ -176,7 +176,7 @@ ErrorOr<RefPtr<GUI::Widget>> FastBoxBlur::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         auto gaussian_container = TRY(settings_widget->try_add<GUI::Widget>()); |         auto gaussian_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         gaussian_container->set_fixed_height(20); |         gaussian_container->set_fixed_height(20); | ||||||
|         (void)TRY(gaussian_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(gaussian_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         m_gaussian_checkbox = TRY(gaussian_container->try_add<GUI::CheckBox>(TRY(String::from_utf8("Approximate Gaussian Blur"sv)))); |         m_gaussian_checkbox = TRY(gaussian_container->try_add<GUI::CheckBox>(TRY(String::from_utf8("Approximate Gaussian Blur"sv)))); | ||||||
|         m_gaussian_checkbox->set_checked(m_approximate_gauss); |         m_gaussian_checkbox->set_checked(m_approximate_gauss); | ||||||
|  |  | ||||||
|  | @ -21,7 +21,7 @@ ErrorOr<RefPtr<GUI::Widget>> Sepia::get_settings_widget() | ||||||
| { | { | ||||||
|     if (!m_settings_widget) { |     if (!m_settings_widget) { | ||||||
|         auto settings_widget = TRY(GUI::Widget::try_create()); |         auto settings_widget = TRY(GUI::Widget::try_create()); | ||||||
|         (void)TRY(settings_widget->try_set_layout<GUI::VerticalBoxLayout>()); |         TRY(settings_widget->try_set_layout<GUI::VerticalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|         auto name_label = TRY(settings_widget->try_add<GUI::Label>("Sepia Filter")); |         auto name_label = TRY(settings_widget->try_add<GUI::Label>("Sepia Filter")); | ||||||
|         name_label->set_font_weight(Gfx::FontWeight::Bold); |         name_label->set_font_weight(Gfx::FontWeight::Bold); | ||||||
|  | @ -30,7 +30,7 @@ ErrorOr<RefPtr<GUI::Widget>> Sepia::get_settings_widget() | ||||||
| 
 | 
 | ||||||
|         auto amount_container = TRY(settings_widget->try_add<GUI::Widget>()); |         auto amount_container = TRY(settings_widget->try_add<GUI::Widget>()); | ||||||
|         amount_container->set_fixed_height(20); |         amount_container->set_fixed_height(20); | ||||||
|         (void)TRY(amount_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); |         TRY(amount_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 4, 0, 4, 0 })); | ||||||
| 
 | 
 | ||||||
|         auto amount_label = TRY(amount_container->try_add<GUI::Label>("Amount:")); |         auto amount_label = TRY(amount_container->try_add<GUI::Label>("Amount:")); | ||||||
|         amount_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); |         amount_label->set_text_alignment(Gfx::TextAlignment::CenterLeft); | ||||||
|  |  | ||||||
|  | @ -214,7 +214,7 @@ ErrorOr<GUI::Widget*> GradientTool::get_properties_widget() | ||||||
| 
 | 
 | ||||||
|         auto button_container = TRY(properties_widget->try_add<GUI::Widget>()); |         auto button_container = TRY(properties_widget->try_add<GUI::Widget>()); | ||||||
|         button_container->set_fixed_height(22); |         button_container->set_fixed_height(22); | ||||||
|         (void)TRY(button_container->try_set_layout<GUI::HorizontalBoxLayout>()); |         TRY(button_container->try_set_layout<GUI::HorizontalBoxLayout>()); | ||||||
|         button_container->add_spacer().release_value_but_fixme_should_propagate_errors(); |         button_container->add_spacer().release_value_but_fixme_should_propagate_errors(); | ||||||
| 
 | 
 | ||||||
|         auto apply_button = TRY(button_container->try_add<GUI::DialogButton>(String::from_utf8_short_string("Apply"sv))); |         auto apply_button = TRY(button_container->try_add<GUI::DialogButton>(String::from_utf8_short_string("Apply"sv))); | ||||||
|  |  | ||||||
|  | @ -16,7 +16,7 @@ ErrorOr<NonnullRefPtr<ProgressWindow>> ProgressWindow::try_create(StringView tit | ||||||
| 
 | 
 | ||||||
|     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); |     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); | ||||||
|     main_widget->set_fill_with_background_color(true); |     main_widget->set_fill_with_background_color(true); | ||||||
|     (void)TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>()); |     TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>()); | ||||||
| 
 | 
 | ||||||
|     auto label = TRY(main_widget->try_add<GUI::Label>("Analyzing storage space...")); |     auto label = TRY(main_widget->try_add<GUI::Label>("Analyzing storage space...")); | ||||||
|     label->set_fixed_height(22); |     label->set_fixed_height(22); | ||||||
|  |  | ||||||
|  | @ -175,10 +175,10 @@ static ErrorOr<NonnullRefPtr<GUI::Window>> create_find_window(VT::TerminalWidget | ||||||
|     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); |     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); | ||||||
|     main_widget->set_fill_with_background_color(true); |     main_widget->set_fill_with_background_color(true); | ||||||
|     main_widget->set_background_role(ColorRole::Button); |     main_widget->set_background_role(ColorRole::Button); | ||||||
|     (void)TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto find = TRY(main_widget->try_add<GUI::Widget>()); |     auto find = TRY(main_widget->try_add<GUI::Widget>()); | ||||||
|     (void)TRY(find->try_set_layout<GUI::HorizontalBoxLayout>(4)); |     TRY(find->try_set_layout<GUI::HorizontalBoxLayout>(4)); | ||||||
|     find->set_fixed_height(30); |     find->set_fixed_height(30); | ||||||
| 
 | 
 | ||||||
|     auto find_textbox = TRY(find->try_add<GUI::TextBox>()); |     auto find_textbox = TRY(find->try_add<GUI::TextBox>()); | ||||||
|  |  | ||||||
|  | @ -435,12 +435,12 @@ ErrorOr<void> MainWidget::add_property_tab(PropertyTab const& property_tab) | ||||||
| 
 | 
 | ||||||
|     auto properties_list = TRY(GUI::Widget::try_create()); |     auto properties_list = TRY(GUI::Widget::try_create()); | ||||||
|     scrollable_container->set_widget(properties_list); |     scrollable_container->set_widget(properties_list); | ||||||
|     (void)TRY(properties_list->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 8 }, 12)); |     TRY(properties_list->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 8 }, 12)); | ||||||
| 
 | 
 | ||||||
|     for (auto const& group : property_tab.property_groups) { |     for (auto const& group : property_tab.property_groups) { | ||||||
|         NonnullRefPtr<GUI::GroupBox> group_box = TRY(properties_list->try_add<GUI::GroupBox>(group.title)); |         NonnullRefPtr<GUI::GroupBox> group_box = TRY(properties_list->try_add<GUI::GroupBox>(group.title)); | ||||||
|         // 1px less on the left makes the text line up with the group title.
 |         // 1px less on the left makes the text line up with the group title.
 | ||||||
|         (void)TRY(group_box->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 8, 8, 8, 7 }, 12)); |         TRY(group_box->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 8, 8, 8, 7 }, 12)); | ||||||
|         group_box->set_preferred_height(GUI::SpecialDimension::Fit); |         group_box->set_preferred_height(GUI::SpecialDimension::Fit); | ||||||
| 
 | 
 | ||||||
|         for (auto const& property : group.properties) { |         for (auto const& property : group.properties) { | ||||||
|  |  | ||||||
|  | @ -42,7 +42,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
| 
 | 
 | ||||||
|     auto catdog_widget = TRY(CatDog::create()); |     auto catdog_widget = TRY(CatDog::create()); | ||||||
|     window->set_main_widget(catdog_widget); |     window->set_main_widget(catdog_widget); | ||||||
|     (void)TRY(catdog_widget->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins {}, 0)); |     TRY(catdog_widget->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins {}, 0)); | ||||||
| 
 | 
 | ||||||
|     auto context_menu = TRY(GUI::Menu::try_create()); |     auto context_menu = TRY(GUI::Menu::try_create()); | ||||||
|     TRY(context_menu->try_add_action(GUI::CommonActions::make_about_action("CatDog Demo", app_icon, window))); |     TRY(context_menu->try_add_action(GUI::CommonActions::make_about_action("CatDog Demo", app_icon, window))); | ||||||
|  | @ -62,7 +62,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     advice_window->set_alpha_hit_threshold(1.0f); |     advice_window->set_alpha_hit_threshold(1.0f); | ||||||
| 
 | 
 | ||||||
|     auto advice_widget = TRY(advice_window->set_main_widget<SpeechBubble>(catdog_widget)); |     auto advice_widget = TRY(advice_window->set_main_widget<SpeechBubble>(catdog_widget)); | ||||||
|     (void)TRY(advice_widget->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins {}, 0)); |     TRY(advice_widget->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins {}, 0)); | ||||||
| 
 | 
 | ||||||
|     auto advice_timer = TRY(Core::Timer::create_single_shot(15'000, [&] { |     auto advice_timer = TRY(Core::Timer::create_single_shot(15'000, [&] { | ||||||
|         window->move_to_front(); |         window->move_to_front(); | ||||||
|  |  | ||||||
|  | @ -13,7 +13,7 @@ GalleryWidget::GalleryWidget() | ||||||
|     set_layout<GUI::VerticalBoxLayout>(); |     set_layout<GUI::VerticalBoxLayout>(); | ||||||
| 
 | 
 | ||||||
|     auto& inner_widget = add<GUI::Widget>(); |     auto& inner_widget = add<GUI::Widget>(); | ||||||
|     (void)inner_widget.try_set_layout<GUI::VerticalBoxLayout>(4).release_value_but_fixme_should_propagate_errors(); |     inner_widget.try_set_layout<GUI::VerticalBoxLayout>(4).release_value_but_fixme_should_propagate_errors(); | ||||||
| 
 | 
 | ||||||
|     m_tab_widget = inner_widget.try_add<GUI::TabWidget>().release_value_but_fixme_should_propagate_errors(); |     m_tab_widget = inner_widget.try_add<GUI::TabWidget>().release_value_but_fixme_should_propagate_errors(); | ||||||
|     m_statusbar = add<GUI::Statusbar>(); |     m_statusbar = add<GUI::Statusbar>(); | ||||||
|  |  | ||||||
|  | @ -132,7 +132,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     auto tab_widget = TRY(main_splitter->try_add<GUI::TabWidget>()); |     auto tab_widget = TRY(main_splitter->try_add<GUI::TabWidget>()); | ||||||
| 
 | 
 | ||||||
|     auto tree_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Call Tree")); |     auto tree_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Call Tree")); | ||||||
|     (void)TRY(tree_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(tree_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
|     auto bottom_splitter = TRY(tree_tab->try_add<GUI::VerticalSplitter>()); |     auto bottom_splitter = TRY(tree_tab->try_add<GUI::VerticalSplitter>()); | ||||||
| 
 | 
 | ||||||
|     auto tree_view = TRY(bottom_splitter->try_add<GUI::TreeView>()); |     auto tree_view = TRY(bottom_splitter->try_add<GUI::TreeView>()); | ||||||
|  | @ -181,7 +181,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     }); |     }); | ||||||
| 
 | 
 | ||||||
|     auto samples_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Samples")); |     auto samples_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Samples")); | ||||||
|     (void)TRY(samples_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(samples_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto samples_splitter = TRY(samples_tab->try_add<GUI::HorizontalSplitter>()); |     auto samples_splitter = TRY(samples_tab->try_add<GUI::HorizontalSplitter>()); | ||||||
|     auto samples_table_view = TRY(samples_splitter->try_add<GUI::TableView>()); |     auto samples_table_view = TRY(samples_splitter->try_add<GUI::TableView>()); | ||||||
|  | @ -195,7 +195,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     auto signposts_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Signposts")); |     auto signposts_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Signposts")); | ||||||
|     (void)TRY(signposts_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(signposts_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto signposts_splitter = TRY(signposts_tab->try_add<GUI::HorizontalSplitter>()); |     auto signposts_splitter = TRY(signposts_tab->try_add<GUI::HorizontalSplitter>()); | ||||||
|     auto signposts_table_view = TRY(signposts_splitter->try_add<GUI::TableView>()); |     auto signposts_table_view = TRY(signposts_splitter->try_add<GUI::TableView>()); | ||||||
|  | @ -209,7 +209,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     }; |     }; | ||||||
| 
 | 
 | ||||||
|     auto flamegraph_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Flame Graph")); |     auto flamegraph_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Flame Graph")); | ||||||
|     (void)TRY(flamegraph_tab->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 4, 4, 4 })); |     TRY(flamegraph_tab->try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins { 4, 4, 4, 4 })); | ||||||
| 
 | 
 | ||||||
|     auto flamegraph_view = TRY(flamegraph_tab->try_add<FlameGraphView>(profile->model(), ProfileModel::Column::StackFrame, ProfileModel::Column::SampleCount)); |     auto flamegraph_view = TRY(flamegraph_tab->try_add<FlameGraphView>(profile->model(), ProfileModel::Column::StackFrame, ProfileModel::Column::SampleCount)); | ||||||
| 
 | 
 | ||||||
|  | @ -257,7 +257,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     flamegraph_view->on_hover_change = [&] { statusbar_update(); }; |     flamegraph_view->on_hover_change = [&] { statusbar_update(); }; | ||||||
| 
 | 
 | ||||||
|     auto filesystem_events_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Filesystem events")); |     auto filesystem_events_tab = TRY(tab_widget->try_add_tab<GUI::Widget>("Filesystem events")); | ||||||
|     (void)TRY(filesystem_events_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); |     TRY(filesystem_events_tab->try_set_layout<GUI::VerticalBoxLayout>(4)); | ||||||
| 
 | 
 | ||||||
|     auto filesystem_events_tree_view = TRY(filesystem_events_tab->try_add<GUI::TreeView>()); |     auto filesystem_events_tree_view = TRY(filesystem_events_tab->try_add<GUI::TreeView>()); | ||||||
|     filesystem_events_tree_view->set_should_fill_selected_rows(true); |     filesystem_events_tree_view->set_should_fill_selected_rows(true); | ||||||
|  |  | ||||||
|  | @ -60,7 +60,7 @@ ErrorOr<int> serenity_main(Main::Arguments arguments) | ||||||
|     main_toolbar.layout()->set_margins({ 0, 6 }); |     main_toolbar.layout()->set_margins({ 0, 6 }); | ||||||
| 
 | 
 | ||||||
|     auto& board_widget_container = *main_widget->find_descendant_of_type_named<GUI::Widget>("board_widget_container"); |     auto& board_widget_container = *main_widget->find_descendant_of_type_named<GUI::Widget>("board_widget_container"); | ||||||
|     (void)TRY(board_widget_container.try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins {}, 0)); |     TRY(board_widget_container.try_set_layout<GUI::VerticalBoxLayout>(GUI::Margins {}, 0)); | ||||||
|     auto board_widget = TRY(board_widget_container.try_add<BoardWidget>(board_rows, board_columns)); |     auto board_widget = TRY(board_widget_container.try_add<BoardWidget>(board_rows, board_columns)); | ||||||
|     board_widget->randomize_cells(); |     board_widget->randomize_cells(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -34,13 +34,13 @@ ErrorOr<NonnullRefPtr<SettingsWindow>> SettingsWindow::create(DeprecatedString t | ||||||
| 
 | 
 | ||||||
|     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); |     auto main_widget = TRY(window->set_main_widget<GUI::Widget>()); | ||||||
|     main_widget->set_fill_with_background_color(true); |     main_widget->set_fill_with_background_color(true); | ||||||
|     (void)TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(4, 6)); |     TRY(main_widget->try_set_layout<GUI::VerticalBoxLayout>(4, 6)); | ||||||
| 
 | 
 | ||||||
|     window->m_tab_widget = TRY(main_widget->try_add<GUI::TabWidget>()); |     window->m_tab_widget = TRY(main_widget->try_add<GUI::TabWidget>()); | ||||||
| 
 | 
 | ||||||
|     auto button_container = TRY(main_widget->try_add<GUI::Widget>()); |     auto button_container = TRY(main_widget->try_add<GUI::Widget>()); | ||||||
|     button_container->set_preferred_size({ SpecialDimension::Grow, SpecialDimension::Fit }); |     button_container->set_preferred_size({ SpecialDimension::Grow, SpecialDimension::Fit }); | ||||||
|     (void)TRY(button_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 6)); |     TRY(button_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 6)); | ||||||
| 
 | 
 | ||||||
|     if (show_defaults_button == ShowDefaultsButton::Yes) { |     if (show_defaults_button == ShowDefaultsButton::Yes) { | ||||||
|         window->m_reset_button = TRY(button_container->try_add<GUI::DialogButton>(TRY(String::from_utf8("Defaults"sv)))); |         window->m_reset_button = TRY(button_container->try_add<GUI::DialogButton>(TRY(String::from_utf8("Defaults"sv)))); | ||||||
|  |  | ||||||
|  | @ -83,19 +83,18 @@ public: | ||||||
|     void set_layout(NonnullRefPtr<Layout>); |     void set_layout(NonnullRefPtr<Layout>); | ||||||
| 
 | 
 | ||||||
|     template<class T, class... Args> |     template<class T, class... Args> | ||||||
|     ErrorOr<NonnullRefPtr<T>> try_set_layout(Args&&... args) |     ErrorOr<void> try_set_layout(Args&&... args) | ||||||
|     { |     { | ||||||
|         auto layout = TRY(T::try_create(forward<Args>(args)...)); |         auto layout = TRY(T::try_create(forward<Args>(args)...)); | ||||||
|         set_layout(*layout); |         set_layout(*layout); | ||||||
|         return layout; |         return {}; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     template<class T, class... Args> |     template<class T, class... Args> | ||||||
|     inline T& set_layout(Args&&... args) |     inline void set_layout(Args&&... args) | ||||||
|     { |     { | ||||||
|         auto layout = T::construct(forward<Args>(args)...); |         auto layout = T::construct(forward<Args>(args)...); | ||||||
|         set_layout(*layout); |         set_layout(*layout); | ||||||
|         return layout; |  | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     UISize min_size() const { return m_min_size; } |     UISize min_size() const { return m_min_size; } | ||||||
|  |  | ||||||
|  | @ -73,13 +73,13 @@ TaskbarWindow::TaskbarWindow() | ||||||
| ErrorOr<void> TaskbarWindow::populate_taskbar() | ErrorOr<void> TaskbarWindow::populate_taskbar() | ||||||
| { | { | ||||||
|     auto main_widget = TRY(set_main_widget<TaskbarWidget>()); |     auto main_widget = TRY(set_main_widget<TaskbarWidget>()); | ||||||
|     (void)TRY(main_widget->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 2, 3, 0, 3 })); |     TRY(main_widget->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins { 2, 3, 0, 3 })); | ||||||
| 
 | 
 | ||||||
|     m_quick_launch = TRY(Taskbar::QuickLaunchWidget::create()); |     m_quick_launch = TRY(Taskbar::QuickLaunchWidget::create()); | ||||||
|     TRY(main_widget->try_add_child(*m_quick_launch)); |     TRY(main_widget->try_add_child(*m_quick_launch)); | ||||||
| 
 | 
 | ||||||
|     m_task_button_container = TRY(main_widget->try_add<GUI::Widget>()); |     m_task_button_container = TRY(main_widget->try_add<GUI::Widget>()); | ||||||
|     (void)TRY(m_task_button_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 3)); |     TRY(m_task_button_container->try_set_layout<GUI::HorizontalBoxLayout>(GUI::Margins {}, 3)); | ||||||
| 
 | 
 | ||||||
|     m_default_icon = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/window.png"sv)); |     m_default_icon = TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/window.png"sv)); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Sam Atkins
						Sam Atkins