Przeglądaj źródła

PixelPaint: Call `Layer::did_modify_bitmap()` when applying filters

Previously applying filters was not calling this method, which was
not correctly triggering the `image_did_modify_bitmap` call for
the `ImageClient`s. This patch makes the filter actions call this
method.

It seems that just opening one of the Window menus triggers a repaint
of the entire editor, which is what was causing filters to update
earlier, since we were only accessing them from the menu. Using
the keyboard shortcut added in a previous commit highlighted this issue.
Mustafa Quraish 3 lat temu
rodzic
commit
ee25e2adc2
1 zmienionych plików z 10 dodań i 0 usunięć
  1. 10 0
      Userland/Applications/PixelPaint/MainWidget.cpp

+ 10 - 0
Userland/Applications/PixelPaint/MainWidget.cpp

@@ -577,6 +577,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::LaplacianFilter filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::LaplacianFilter>::get(false)) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -589,6 +590,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::LaplacianFilter filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::LaplacianFilter>::get(true)) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -602,6 +604,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::SpatialGaussianBlurFilter<3> filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::SpatialGaussianBlurFilter<3>>::get()) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -614,6 +617,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::SpatialGaussianBlurFilter<5> filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::SpatialGaussianBlurFilter<5>>::get()) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -626,6 +630,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::BoxBlurFilter<3> filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::BoxBlurFilter<3>>::get()) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -638,6 +643,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::BoxBlurFilter<5> filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::BoxBlurFilter<5>>::get()) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -650,6 +656,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::SharpenFilter filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::SharpenFilter>::get()) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -664,6 +671,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
             Gfx::GenericConvolutionFilter<5> filter;
             if (auto parameters = PixelPaint::FilterParameters<Gfx::GenericConvolutionFilter<5>>::get(&window)) {
                 filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect(), *parameters);
+                layer->did_modify_bitmap(layer->rect());
                 editor->did_complete_action();
             }
         }
@@ -677,6 +685,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
         if (auto* layer = editor->active_layer()) {
             Gfx::GrayscaleFilter filter;
             filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect());
+            layer->did_modify_bitmap(layer->rect());
             editor->did_complete_action();
         }
     }));
@@ -687,6 +696,7 @@ void MainWidget::initialize_menubar(GUI::Window& window)
         if (auto* layer = editor->active_layer()) {
             Gfx::InvertFilter filter;
             filter.apply(layer->bitmap(), layer->rect(), layer->bitmap(), layer->rect());
+            layer->did_modify_bitmap(layer->rect());
             editor->did_complete_action();
         }
     }));