Kaynağa Gözat

ImageViewer: Use the same function to resize the window

ImageViewer used two different logic to resize the display window, which
leads to confusing behaviour for rotate function. Now all the resizing
behaviour goes through the existing resize_window function.
Aziz Berkay Yesilyurt 4 yıl önce
ebeveyn
işleme
285d4fac38

+ 1 - 1
Userland/Applications/ImageViewer/ViewWidget.cpp

@@ -130,7 +130,7 @@ void ViewWidget::set_scale(int scale)
     m_bitmap_rect.set_size(new_size);
 
     if (on_scale_change)
-        on_scale_change(m_scale, m_bitmap_rect);
+        on_scale_change(m_scale);
 
     relayout();
 }

+ 2 - 2
Userland/Applications/ImageViewer/ViewWidget.h

@@ -34,6 +34,7 @@ public:
     int toolbar_height() { return m_toolbar_height; }
     bool scaled_for_first_image() { return m_scaled_for_first_image; }
     void set_scaled_for_first_image(bool val) { m_scaled_for_first_image = val; }
+    void resize_window();
 
     void clear();
     void flip(Gfx::Orientation);
@@ -41,7 +42,7 @@ public:
     void navigate(Directions);
     void load_from_file(const String&);
 
-    Function<void(int, Gfx::IntRect)> on_scale_change;
+    Function<void(int)> on_scale_change;
     Function<void()> on_doubleclick;
     Function<void(const GUI::DropEvent&)> on_drop;
     Function<void(const Gfx::Bitmap*)> on_image_change;
@@ -60,7 +61,6 @@ private:
     void set_bitmap(const Gfx::Bitmap* bitmap);
 
     void relayout();
-    void resize_window();
     void reset_view();
     void animate();
 

+ 2 - 10
Userland/Applications/ImageViewer/main.cpp

@@ -78,7 +78,7 @@ int main(int argc, char** argv)
     auto& main_toolbar = toolbar_container.add<GUI::Toolbar>();
 
     auto& widget = root_widget.add<ViewWidget>();
-    widget.on_scale_change = [&](int scale, Gfx::IntRect rect) {
+    widget.on_scale_change = [&](int scale) {
         if (!widget.bitmap()) {
             window->set_title("Image Viewer");
             return;
@@ -86,17 +86,9 @@ int main(int argc, char** argv)
 
         window->set_title(String::formatted("{} {} {}% - Image Viewer", widget.path(), widget.bitmap()->size().to_string(), scale));
 
-        if (window->is_fullscreen())
-            return;
-
-        if (window->is_maximized())
-            return;
-
         if (scale == 100 && !widget.scaled_for_first_image()) {
             widget.set_scaled_for_first_image(true);
-            auto w = min(GUI::Desktop::the().rect().width(), rect.width() + 4);
-            auto h = min(GUI::Desktop::the().rect().height(), rect.height() + widget.toolbar_height() + 6);
-            window->resize(w, h);
+            widget.resize_window();
         }
     };
     widget.on_drop = [&](auto& event) {