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.
This commit is contained in:
Aziz Berkay Yesilyurt 2021-07-13 23:34:12 +02:00 committed by Andreas Kling
parent a19a40d6d3
commit 285d4fac38
3 changed files with 5 additions and 13 deletions

View file

@ -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();
}

View file

@ -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();

View file

@ -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) {