소스 검색

PixelPaint: Add basic support for closing tabs

This enables closing of tabs in PixelPaint, for the moment
very basic with no checking if the image is modified or saved.
Marcus Nilsson 4 년 전
부모
커밋
f2aa5efbeb
1개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 8 0
      Userland/Applications/PixelPaint/main.cpp

+ 8 - 0
Userland/Applications/PixelPaint/main.cpp

@@ -61,6 +61,7 @@ int main(int argc, char** argv)
     auto& toolbox = *main_widget.find_descendant_of_type_named<PixelPaint::ToolboxWidget>("toolbox");
     auto& toolbox = *main_widget.find_descendant_of_type_named<PixelPaint::ToolboxWidget>("toolbox");
     auto& tab_widget = *main_widget.find_descendant_of_type_named<GUI::TabWidget>("tab_widget");
     auto& tab_widget = *main_widget.find_descendant_of_type_named<GUI::TabWidget>("tab_widget");
     tab_widget.set_container_margins({ 4, 4, 5, 5 });
     tab_widget.set_container_margins({ 4, 4, 5, 5 });
+    tab_widget.set_close_button_enabled(true);
 
 
     auto& palette_widget = *main_widget.find_descendant_of_type_named<PixelPaint::PaletteWidget>("palette_widget");
     auto& palette_widget = *main_widget.find_descendant_of_type_named<PixelPaint::PaletteWidget>("palette_widget");
 
 
@@ -524,6 +525,13 @@ int main(int argc, char** argv)
         return image_editor;
         return image_editor;
     };
     };
 
 
+    tab_widget.on_tab_close_click = [&](auto& widget) {
+        auto& image_editor = downcast<PixelPaint::ImageEditor>(widget);
+        tab_widget.deferred_invoke([&](auto&) {
+            tab_widget.remove_tab(image_editor);
+        });
+    };
+
     tab_widget.on_change = [&](auto& widget) {
     tab_widget.on_change = [&](auto& widget) {
         auto& image_editor = downcast<PixelPaint::ImageEditor>(widget);
         auto& image_editor = downcast<PixelPaint::ImageEditor>(widget);
         palette_widget.set_image_editor(image_editor);
         palette_widget.set_image_editor(image_editor);