diff libgui/src/m-editor/file-editor.cc @ 15980:6c0fce0632a4

gui: set keyboard focus when switching between dock widgets (bug #36957) * main-window.cc (handle_command_window_visible, handle_command_history_visible, handle_current_directory_visible, handle_workspace_visible, handle_editor_visible, handle_documentation_visible): slots for signal visibilityChanged, emitted when widgets get visible * main-window.cc (construct): connect signal visibilityChanged to slots * main-window.cc (focus_editor): call editor's own function for setting focus * main-window.h: declaration of new slots * file-editor.cc (set_focus): new function: setting focus to actual editor tab * file-editor.cc (add_file_editor_tab): connect signal fetab_set_focus to the slot set_focus of file_editor_tab * file-editor.h: new function set_focus and new signal fetab_set_focus * file-editor-interface.h: new virtual function set_focus * file-editor-tab.cc (set_focus): new slot for singal fetab_set_focus from file_editor, setting the focus to edit area * file-edtortab.h: new slot set_focus
author Torsten <ttl@justmail.de>
date Sat, 26 Jan 2013 20:33:46 +0100
parents 927b121ad63f
children 131d40cd805b
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor.cc	Thu Jan 24 17:13:15 2013 -0500
+++ b/libgui/src/m-editor/file-editor.cc	Sat Jan 26 20:33:46 2013 +0100
@@ -64,6 +64,18 @@
   settings->sync ();
 }
 
+// set focus to editor and its current tab
+void
+file_editor::set_focus ()
+{
+  setFocus ();
+  activateWindow ();
+  raise ();
+  QWidget *fileEditorTab = _tab_widget->currentWidget ();
+  if (fileEditorTab)
+    emit fetab_set_focus (fileEditorTab);
+}
+
 QMenu *
 file_editor::debug_menu ()
 {
@@ -819,6 +831,8 @@
            f, SLOT (uncomment_selected_text (const QWidget*)));
   connect (this, SIGNAL (fetab_find (const QWidget*)),
            f, SLOT (find (const QWidget*)));
+  connect (this, SIGNAL (fetab_set_focus (const QWidget*)),
+           f, SLOT (set_focus (const QWidget*)));
 
   _tab_widget->setCurrentWidget (f);
 }