diff libgui/src/m-editor/file-editor.cc @ 19945:f7a805f02723

link undo in main window to editor if the latter has focus (bug #44402) * file-editor.cc (editor_tab_has_focus): helper function checking whether an edit area has the focus; (copyClipboard, pasteClipboard, selectAll): use this helper function; (do_undo): new slot for the undo action triggered from the main window * file-editor.h: new helper function and new slots * main-window.cc (handle_undo_request): emit a signal for undo instead of undoing in terminal window when terminal does not have focus * main-window.h: new undo signal * octave-dock-widget.cc (octave_dock_widget): connect undo signal from main-window to new virtual slot; * octave-dock-widget.h: new virtual slot do_undo, doing nothing
author Torsten <ttl@justmail.de>
date Sat, 14 Mar 2015 18:54:23 +0100
parents 3c414ad460d5
children 97b37077a2d3
line wrap: on
line diff
--- a/libgui/src/m-editor/file-editor.cc	Sat Mar 14 14:52:58 2015 +0000
+++ b/libgui/src/m-editor/file-editor.cc	Sat Mar 14 18:54:23 2015 +0100
@@ -1759,35 +1759,39 @@
   check_actions ();
 }
 
+bool
+file_editor::editor_tab_has_focus ()
+{
+  QWidget * foc_w = focusWidget ();
+  if (foc_w && foc_w->inherits ("octave_qscintilla"))
+    return true;
+  return false;
+}
+
 void
 file_editor::copyClipboard ()
 {
-  QWidget * foc_w = focusWidget ();
-
-  if (foc_w && foc_w->inherits ("octave_qscintilla"))
-    {
-      request_copy (true);
-    }
+  if (editor_tab_has_focus ())
+    request_copy (true);
 }
 void
 file_editor::pasteClipboard ()
 {
-  QWidget * foc_w = focusWidget ();
-
-  if (foc_w && foc_w->inherits ("octave_qscintilla"))
-    {
-      request_paste (true);
-    }
+  if (editor_tab_has_focus ())
+    request_paste (true);
 }
 void
 file_editor::selectAll ()
 {
-  QWidget * foc_w = focusWidget ();
+  if (editor_tab_has_focus ())
+    request_selectall (true);
+}
 
-  if (foc_w && foc_w->inherits ("octave_qscintilla"))
-    {
-      request_selectall (true);
-    }
+void
+file_editor::do_undo ()
+{
+  if (editor_tab_has_focus ())
+    request_undo (true);
 }
 
 void