Fix inspector window sometimes not hiding
When the f shortcut is quickly pressed, the inspector window will sometimes open and remain open even though it should automatically close. This commit ensures the window closes by capturing the f key release event from the main window in addition to the inspector window.
This commit is contained in:
parent
61aba8ad08
commit
67e18b5c53
@ -2524,6 +2524,21 @@ bool FileCatalog::handleShortcutKey (GdkEventKey* event)
|
|||||||
return fileBrowser->keyPressed(event);
|
return fileBrowser->keyPressed(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FileCatalog::handleShortcutKeyRelease(GdkEventKey* event)
|
||||||
|
{
|
||||||
|
bool ctrl = event->state & GDK_CONTROL_MASK;
|
||||||
|
bool alt = event->state & GDK_MOD1_MASK;
|
||||||
|
|
||||||
|
if (!ctrl && !alt) {
|
||||||
|
switch (event->keyval) {
|
||||||
|
case GDK_KEY_f:
|
||||||
|
case GDK_KEY_F:
|
||||||
|
fileBrowser->getInspector()->hideWindow();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void FileCatalog::showToolBar()
|
void FileCatalog::showToolBar()
|
||||||
{
|
{
|
||||||
if (hbToolBar1STB) {
|
if (hbToolBar1STB) {
|
||||||
|
@ -276,6 +276,7 @@ public:
|
|||||||
void openNextPreviousEditorImage (Glib::ustring fname, bool clearFilters, eRTNav nextPrevious);
|
void openNextPreviousEditorImage (Glib::ustring fname, bool clearFilters, eRTNav nextPrevious);
|
||||||
|
|
||||||
bool handleShortcutKey (GdkEventKey* event);
|
bool handleShortcutKey (GdkEventKey* event);
|
||||||
|
bool handleShortcutKeyRelease(GdkEventKey *event);
|
||||||
|
|
||||||
bool CheckSidePanelsVisibility();
|
bool CheckSidePanelsVisibility();
|
||||||
void toggleSidePanels();
|
void toggleSidePanels();
|
||||||
|
@ -412,6 +412,15 @@ bool FilePanel::handleShortcutKey (GdkEventKey* event)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FilePanel::handleShortcutKeyRelease(GdkEventKey *event)
|
||||||
|
{
|
||||||
|
if(fileCatalog->handleShortcutKeyRelease(event)) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void FilePanel::loadingThumbs(Glib::ustring str, double rate)
|
void FilePanel::loadingThumbs(Glib::ustring str, double rate)
|
||||||
{
|
{
|
||||||
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
GThreadLock lock; // All GUI access from idle_add callbacks or separate thread HAVE to be protected
|
||||||
|
@ -81,6 +81,7 @@ public:
|
|||||||
bool imageLoaded( Thumbnail* thm, ProgressConnector<rtengine::InitialImage*> * );
|
bool imageLoaded( Thumbnail* thm, ProgressConnector<rtengine::InitialImage*> * );
|
||||||
|
|
||||||
bool handleShortcutKey (GdkEventKey* event);
|
bool handleShortcutKey (GdkEventKey* event);
|
||||||
|
bool handleShortcutKeyRelease(GdkEventKey *event);
|
||||||
void updateTPVScrollbar (bool hide);
|
void updateTPVScrollbar (bool hide);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -144,6 +144,11 @@ void Inspector::showWindow(bool scaled, bool fullscreen)
|
|||||||
mouseMove(next_image_pos, 0);
|
mouseMove(next_image_pos, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Inspector::hideWindow()
|
||||||
|
{
|
||||||
|
window->set_visible(false);
|
||||||
|
}
|
||||||
|
|
||||||
bool Inspector::on_key_release(GdkEventKey *event)
|
bool Inspector::on_key_release(GdkEventKey *event)
|
||||||
{
|
{
|
||||||
if (!window)
|
if (!window)
|
||||||
|
@ -91,6 +91,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
void showWindow(bool scaled, bool fullscreen = true);
|
void showWindow(bool scaled, bool fullscreen = true);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Hide the window.
|
||||||
|
*/
|
||||||
|
void hideWindow();
|
||||||
|
|
||||||
/** @brief Mouse movement to a new position
|
/** @brief Mouse movement to a new position
|
||||||
* @param pos Location of the mouse, in percentage (i.e. [0;1] range) relative to the full size image ; -1,-1 == out of the image
|
* @param pos Location of the mouse, in percentage (i.e. [0;1] range) relative to the full size image ; -1,-1 == out of the image
|
||||||
* @param transform H/V flip and coarse rotation transformation
|
* @param transform H/V flip and coarse rotation transformation
|
||||||
|
@ -285,6 +285,7 @@ RTWindow::RTWindow ()
|
|||||||
property_destroy_with_parent().set_value (false);
|
property_destroy_with_parent().set_value (false);
|
||||||
signal_window_state_event().connect ( sigc::mem_fun (*this, &RTWindow::on_window_state_event) );
|
signal_window_state_event().connect ( sigc::mem_fun (*this, &RTWindow::on_window_state_event) );
|
||||||
signal_key_press_event().connect ( sigc::mem_fun (*this, &RTWindow::keyPressed) );
|
signal_key_press_event().connect ( sigc::mem_fun (*this, &RTWindow::keyPressed) );
|
||||||
|
signal_key_release_event().connect(sigc::mem_fun(*this, &RTWindow::keyReleased));
|
||||||
|
|
||||||
if (simpleEditor) {
|
if (simpleEditor) {
|
||||||
epanel = Gtk::manage ( new EditorPanel (nullptr) );
|
epanel = Gtk::manage ( new EditorPanel (nullptr) );
|
||||||
@ -756,6 +757,14 @@ bool RTWindow::keyPressed (GdkEventKey* event)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool RTWindow::keyReleased(GdkEventKey *event)
|
||||||
|
{
|
||||||
|
if (mainNB->get_current_page() == mainNB->page_num(*fpanel)) {
|
||||||
|
return fpanel->handleShortcutKeyRelease(event);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void RTWindow::addBatchQueueJob (BatchQueueEntry* bqe, bool head)
|
void RTWindow::addBatchQueueJob (BatchQueueEntry* bqe, bool head)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
@ -85,6 +85,7 @@ public:
|
|||||||
void addBatchQueueJobs (const std::vector<BatchQueueEntry*>& entries);
|
void addBatchQueueJobs (const std::vector<BatchQueueEntry*>& entries);
|
||||||
|
|
||||||
bool keyPressed (GdkEventKey* event);
|
bool keyPressed (GdkEventKey* event);
|
||||||
|
bool keyReleased(GdkEventKey *event);
|
||||||
bool on_configure_event (GdkEventConfigure* event) override;
|
bool on_configure_event (GdkEventConfigure* event) override;
|
||||||
bool on_delete_event (GdkEventAny* event) override;
|
bool on_delete_event (GdkEventAny* event) override;
|
||||||
bool on_window_state_event (GdkEventWindowState* event) override;
|
bool on_window_state_event (GdkEventWindowState* event) override;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user