diff libgui/src/history-dock-widget.cc @ 29340:0e97c97044ee

improve handling focus of filter widgets in history and workspace view * history-dock-widget.cc (set_filter_focus): new function, setting focus and focus proxy to the filter or the list view depending on the boolean argument; (filter_activate): call new function set_filter_focus with the filter activation state; (handle_contextmenu_filter): call new function set_filter_focus with filter activation and visibility state * history-dock-widget.h: new function set_filter_focus * workspace-view.cc: same as for history-dock-widget.cc * workspace-view.h: same as for history-dock-widget.h
author Torsten Lilge <ttl-octave@mailbox.org>
date Sat, 30 Jan 2021 12:24:05 +0100
parents 6e0952fa5a4f
children 7854d5752dd2
line wrap: on
line diff
--- a/libgui/src/history-dock-widget.cc	Thu Jan 28 00:23:00 2021 -0500
+++ b/libgui/src/history-dock-widget.cc	Sat Jan 30 12:24:05 2021 +0100
@@ -124,6 +124,20 @@
     m_filter->setCurrentIndex (0);
   }
 
+  void history_dock_widget::set_filter_focus (bool focus)
+  {
+    if (focus)
+      {
+        m_filter->setFocus ();
+        setFocusProxy (m_filter);
+      }
+    else
+      {
+        m_history_list_view->setFocus ();
+        setFocusProxy (m_history_list_view);
+      }
+  }
+
   void history_dock_widget::filter_activate (bool state)
   {
     m_filter->setEnabled (state);
@@ -133,6 +147,8 @@
       m_sort_filter_proxy_model.setFilterWildcard (m_filter->currentText ());
     else
       m_sort_filter_proxy_model.setFilterWildcard (QString ());
+
+    set_filter_focus (state);
   }
 
   void history_dock_widget::ctxMenu (const QPoint& xpos)
@@ -223,6 +239,8 @@
   {
     m_filter_shown = ! m_filter_shown;
     m_filter_widget->setVisible (m_filter_shown);
+
+    set_filter_focus (m_filter_shown && m_filter_checkbox->isChecked ()) ;
   }
 
   void history_dock_widget::copyClipboard (void)