From 36cb32b31be5702574bcc32e97a82296e465a2be Mon Sep 17 00:00:00 2001 From: Lawrence Lee <45837045+Lawrence37@users.noreply.github.com> Date: Sat, 8 May 2021 11:15:41 -0700 Subject: [PATCH] Make inspector window size consistent --- rtgui/filebrowser.cc | 2 +- rtgui/filecatalog.cc | 4 ++-- rtgui/inspector.cc | 22 +++++++++++++++------- rtgui/inspector.h | 4 +++- 4 files changed, 21 insertions(+), 11 deletions(-) diff --git a/rtgui/filebrowser.cc b/rtgui/filebrowser.cc index 0246520ee..304e75a5c 100644 --- a/rtgui/filebrowser.cc +++ b/rtgui/filebrowser.cc @@ -2100,5 +2100,5 @@ void FileBrowser::openRequested( std::vector mselected) void FileBrowser::inspectRequested(std::vector mselected) { - getInspector()->showWindow(false, false, true); + getInspector()->showWindow(true); } diff --git a/rtgui/filecatalog.cc b/rtgui/filecatalog.cc index a685bebe9..c45fc154f 100644 --- a/rtgui/filecatalog.cc +++ b/rtgui/filecatalog.cc @@ -2515,10 +2515,10 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event) if (!ctrl && !alt) { switch (event->keyval) { case GDK_KEY_f: - fileBrowser->getInspector()->showWindow(true); + fileBrowser->getInspector()->showWindow(false, true); return true; case GDK_KEY_F: - fileBrowser->getInspector()->showWindow(false); + fileBrowser->getInspector()->showWindow(false, false); return true; } } diff --git a/rtgui/inspector.cc b/rtgui/inspector.cc index 1534618e4..9fa1b8773 100644 --- a/rtgui/inspector.cc +++ b/rtgui/inspector.cc @@ -83,7 +83,7 @@ InspectorBuffer::~InspectorBuffer() { // return deg; //} -Inspector::Inspector () : currImage(nullptr), scaled(false), scale(1.0), zoomScale(1.0), zoomScaleBegin(1.0), active(false), pinned(false), dirty(false), keyDown(false), windowShowing(false) +Inspector::Inspector () : currImage(nullptr), scaled(false), scale(1.0), zoomScale(1.0), zoomScaleBegin(1.0), active(false), pinned(false), dirty(false), fullscreen(true), keyDown(false), windowShowing(false) { set_name("Inspector"); @@ -99,6 +99,7 @@ Inspector::Inspector () : currImage(nullptr), scaled(false), scale(1.0), zoomSca window->signal_key_release_event().connect(sigc::mem_fun(*this, &Inspector::on_key_release)); window->signal_key_press_event().connect(sigc::mem_fun(*this, &Inspector::on_key_press)); window->signal_hide().connect(sigc::mem_fun(*this, &Inspector::on_window_hide)); + window->signal_window_state_event().connect(sigc::mem_fun(*this, &Inspector::on_inspector_window_state_event)); add_events(Gdk::BUTTON_PRESS_MASK | Gdk::BUTTON_MOTION_MASK | Gdk::SCROLL_MASK | Gdk::SMOOTH_SCROLL_MASK); gestureZoom = Gtk::GestureZoom::create(*this); @@ -107,6 +108,7 @@ Inspector::Inspector () : currImage(nullptr), scaled(false), scale(1.0), zoomSca window->add(*this); window->set_size_request(500, 500); + window->fullscreen(); initialized = false; // delay init to avoid flickering on some systems active = true; // always track inspected thumbnails } @@ -119,7 +121,7 @@ Inspector::~Inspector() delete window; } -void Inspector::showWindow(bool scaled, bool fullscreen, bool pinned) +void Inspector::showWindow(bool pinned, bool scaled) { if (!window || windowShowing) return; @@ -132,11 +134,6 @@ void Inspector::showWindow(bool scaled, bool fullscreen, bool pinned) // show inspector window this->scaled = scaled; - if (fullscreen) - window->fullscreen(); - else - window->unfullscreen(); - this->fullscreen = fullscreen; window->set_visible(true); this->pinned = pinned; windowShowing = true; @@ -225,6 +222,17 @@ void Inspector::on_window_hide() windowShowing = false; } +bool Inspector::on_inspector_window_state_event(GdkEventWindowState *event) +{ + if (!window->get_window() || window->get_window()->gobj() != event->window) { + return false; + } + + fullscreen = event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN; + + return true; +} + bool Inspector::on_button_press_event(GdkEventButton *event) { if (!window) diff --git a/rtgui/inspector.h b/rtgui/inspector.h index 9ff03f96e..5577bfb45 100644 --- a/rtgui/inspector.h +++ b/rtgui/inspector.h @@ -67,6 +67,7 @@ private: bool on_key_press(GdkEventKey *event); void on_window_hide(); + bool on_inspector_window_state_event(GdkEventWindowState *event); rtengine::Coord button_pos; bool on_button_press_event(GdkEventButton *event) override; @@ -90,9 +91,10 @@ public: ~Inspector() override; /** @brief Show or hide window + * @param pinned pin window * @param scaled fit image into window */ - void showWindow(bool scaled, bool fullscreen = true, bool pinned = false); + void showWindow(bool pinned, bool scaled = true); /** * Hide the window.