annotate libgui/src/octave-dock-widget.cc @ 27302:5f170ea12fa1

use Qt signals to pass interpreter callbacks to octave-qobject * interpreter-qobject.h, interpreter-qobject.cc (interpreter_qobject::m_interpreter): New data member. (interpreter_qobject::execute): Cache pointer to interpreter after it is created. Set it to nullptr before exiting to disable interpreter events. (interpreter_qobject::interpreter_event): New functions. * octave-qobject.h, octave-qobject.cc (octave_qapplication::interpreter_event): New signals. (base_qobject::interpreter_event): New slots. Forward action to m_interpreter object interpreter_event functions. (base_qobject::base_qobject): Connect interpreter_event signals for octave_qapplication to the base_qobject::interpreter_event slots. (octave_qapplication::notify): Emit interpreter_event signal instead of using event_manager::post_exception. * qt-interpreter-events.cc: Declare and register octave::fcn_callback and octave::meth_callback as Qt meta types. * event-manager.h, event-manager.cc (event_manager::m_interpreter): New data member. Update constructor, change all uses. (octave::fcn_callback, octave::meth_callback): New typedefs. (event_manager::post_event): Limit allowable callback function signatures. For meth_callback functions, arrange for a reference to the interpreter object to be passed as the first argument. (event_manager::post_exception): Delete. (event_manager::rethrow_exception_callback): Delete. * GLCanvas.cc (GLCanvas::do_print): Use event_manager::post_event instead of event_manager::post_exception. * file-editor-tab.h (file_eitor_tab::interpreter_event): New signals. * file-editor.cc (file_editor::add_file_editor_tab): Forward interpreter_event signal from newly constructed file_editor_tab object to the interpreter_event signal of the file_editor object. * main-window.h, main-window.cc (main_window::construct): Connect the interpreter_event signal from the main_window object to the parent octave_qobject object. (main_window::interpreter_event): New signals. * octave-dock-widget.h, octave-dock-widget.cc (octave_dock_widget::octave_dock_widget) Forward the interpreter_event signal from the octave_dock_widget object to the interpreter_event signal for parent main_window object. (octave_dock_widget::interpreter_event): New signals. * variable-editor-model.h, variable-editor-model.cc (variable_editor_model::init_from_oct, variable_editor_model::retrieve_variable): Accept reference to interpreter object as an argument. Change all uses. (variable_editor_model::interpreter_event): New signals. * variable-editor.cc (variable_editor::edit_variable): Forward interpreter_event signal from newly constructed variable_editor_model to interpreter_event signal fro variable_editor object. * files-dock-widget.cc, file-editor-tab.cc, main-window.cc, variable-editor-model.cc: In all functions that need to perform interpreter actions, emit an interpreter_event signal instead of accessing the interprter event_manager and calling post_interpreter_event directly.
author John W. Eaton <jwe@octave.org>
date Mon, 29 Jul 2019 10:43:04 -0400
parents 0915fec3d3a9
children da1f59fe04b3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
1 /*
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
2
26376
00f796120a6d maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 26343
diff changeset
3 Copyright (C) 2012-2019 Richard Crozier
26428
93c4fabb2ead only reset floating geometry of dock widget when not visible (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
4 Copyright (C) 2013-2019 Torsten <mttl@mailbox.org>
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
5
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
6 This file is part of Octave.
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
7
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24318
diff changeset
8 Octave is free software: you can redistribute it and/or modify it
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22599
diff changeset
9 under the terms of the GNU General Public License as published by
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24318
diff changeset
10 the Free Software Foundation, either version 3 of the License, or
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22599
diff changeset
11 (at your option) any later version.
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
12
22755
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22599
diff changeset
13 Octave is distributed in the hope that it will be useful, but
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22599
diff changeset
14 WITHOUT ANY WARRANTY; without even the implied warranty of
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22599
diff changeset
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3a2b891d0b33 maint: Standardize Copyright formatting.
Rik <rik@octave.org>
parents: 22599
diff changeset
16 GNU General Public License for more details.
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
17
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
18 You should have received a copy of the GNU General Public License
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
19 along with Octave; see the file COPYING. If not, see
24534
194eb4bd202b maint: Update punctuation for GPL v3 license text.
Rik <rik@octave.org>
parents: 24318
diff changeset
20 <https://www.gnu.org/licenses/>.
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
21
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
22 */
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
23
21724
aba2e6293dd8 use "#if ..." consistently instead of "#ifdef" and "#ifndef"
John W. Eaton <jwe@octave.org>
parents: 21301
diff changeset
24 #if defined (HAVE_CONFIG_H)
21301
40de9f8f23a6 Use '#include "config.h"' rather than <config.h>.
Rik <rik@octave.org>
parents: 21203
diff changeset
25 # include "config.h"
17923
b602014eeb54 * octave-dock-widget.cc: Include config.h.
John W. Eaton <jwe@octave.org>
parents: 17899
diff changeset
26 #endif
b602014eeb54 * octave-dock-widget.cc: Include config.h.
John W. Eaton <jwe@octave.org>
parents: 17899
diff changeset
27
16881
944ade6e7f66 Make main window copy and paste global for current focused window
John Donoghue <john.donoghue@ieee.org>
parents: 16865
diff changeset
28 #include <QApplication>
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
29 #include <QAction>
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
30 #include <QDesktopWidget>
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
31 #include <QHBoxLayout>
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
32 #include <QLabel>
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
33 #include <QSettings>
19918
66928b4546ab dock-/undock- and close-icons with variable size (bug #41938)
Torsten <ttl@justmail.de>
parents: 19913
diff changeset
34 #include <QStyle>
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
35 #include <QToolBar>
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
36
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
37 #include "resource-manager.h"
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
38 #include "octave-dock-widget.h"
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
39
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
40 namespace octave
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
41 {
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
42 label_dock_widget::label_dock_widget (QWidget *p)
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
43 : QDockWidget (p), m_default_float_button (nullptr),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
44 m_default_close_button (nullptr)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
45 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
46 QStyle *st = style ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
47 m_icon_size = 0.75*st->pixelMetric (QStyle::PM_SmallIconSize);
19918
66928b4546ab dock-/undock- and close-icons with variable size (bug #41938)
Torsten <ttl@justmail.de>
parents: 19913
diff changeset
48
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
49 // keep track of the original buttons on the default title bar,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
50 // the button further left is considered "float"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
51 QList<QAbstractButton *> buttonlist = findChildren<QAbstractButton *> ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
52 if (buttonlist.size () == 2)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
53 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
54 if (buttonlist.at (0)->x () < buttonlist.at (1)->x ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
55 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
56 m_default_float_button = buttonlist.at (0);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
57 m_default_close_button = buttonlist.at (1);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
58 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
59 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
60 {
26343
df510676ca6a octave-dock-widget.cc: Fix copy & paste error. (bug #55347)
Andreas Weber <octave@josoansi.de>
parents: 26299
diff changeset
61 m_default_float_button = buttonlist.at (1);
df510676ca6a octave-dock-widget.cc: Fix copy & paste error. (bug #55347)
Andreas Weber <octave@josoansi.de>
parents: 26299
diff changeset
62 m_default_close_button = buttonlist.at (0);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
63 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
64 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
65
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
66 // the custom (extra) title bar of the widget
24858
8ce66fe46f18 Improve fullscreen action for variable editor panes (bug #53275)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24842
diff changeset
67 m_title_widget = new QWidget ();
8ce66fe46f18 Improve fullscreen action for variable editor panes (bug #53275)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24842
diff changeset
68
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
69 m_dock_action = new QAction
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
70 (QIcon (":/actions/icons/widget-undock.png"), "", this);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
71 m_dock_action->setToolTip (tr ("Undock widget"));
24858
8ce66fe46f18 Improve fullscreen action for variable editor panes (bug #53275)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24842
diff changeset
72 m_dock_button = new QToolButton (m_title_widget);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
73 m_dock_button->setDefaultAction (m_dock_action);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
74 m_dock_button->setFocusPolicy (Qt::NoFocus);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
75 m_dock_button->setIconSize (QSize (m_icon_size,m_icon_size));
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
76
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
77 m_close_action = new QAction
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
78 (QIcon (":/actions/icons/widget-close.png"), "", this);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
79 m_close_action->setToolTip (tr ("Close widget"));
24858
8ce66fe46f18 Improve fullscreen action for variable editor panes (bug #53275)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24842
diff changeset
80 m_close_button = new QToolButton (m_title_widget);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
81 m_close_button->setDefaultAction (m_close_action);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
82 m_close_button->setFocusPolicy (Qt::NoFocus);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
83 m_close_button->setIconSize (QSize (m_icon_size,m_icon_size));
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
84
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
85 QString css_button = QString ("QToolButton {background: transparent; border: 0px;}");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
86 m_dock_button->setStyleSheet (css_button);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
87 m_close_button->setStyleSheet (css_button);
18218
7952fb0435db improve title bar of dock widgets
Torsten <ttl@justmail.de>
parents: 18180
diff changeset
88
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
89 QHBoxLayout *h_layout = new QHBoxLayout ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
90 h_layout->addStretch (100);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
91 h_layout->addWidget (m_dock_button);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
92 h_layout->addWidget (m_close_button);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
93 h_layout->setSpacing (10);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
94 h_layout->setContentsMargins (5,2,2,2);
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
95
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
96 m_title_widget->setLayout (h_layout);
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
97
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
98 // copy & paste handling
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
99 connect (p, SIGNAL (copyClipboard_signal ()),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
100 this, SLOT (copyClipboard ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
101 connect (p, SIGNAL (pasteClipboard_signal ()),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
102 this, SLOT (pasteClipboard ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
103 connect (p, SIGNAL (selectAll_signal ()),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
104 this, SLOT (selectAll ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
105 // undo handling
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
106 connect (p, SIGNAL (undo_signal ()), this, SLOT (do_undo ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
107 }
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
108
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
109 // set the title in the dockwidgets title bar
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
110 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
111 label_dock_widget::set_title (const QString& title)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
112 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
113 QHBoxLayout *h_layout
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
114 = static_cast<QHBoxLayout *> (m_title_widget->layout ());
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
115 QLabel *label = new QLabel (title, m_title_widget);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
116 label->setStyleSheet ("background-color: transparent;");
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
117 h_layout->insertWidget (0,label);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
118 setTitleBarWidget (m_title_widget);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
119 setWindowTitle (title);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
120 }
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
121
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
122
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
123 static QString
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
124 qdockwidget_css (const QString& close_icon, const QString& close_tooltip,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
125 const QString& float_icon, const QString& float_tooltip,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
126 int icon_size, const QString& titlebar_foreground,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
127 const QString& titlebar_background)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
128 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
129 return QString ("QDockWidget\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
130 "{\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
131 "%6"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
132 " border: none;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
133 " titlebar-close-icon: url(%1);\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
134 " titlebar-normal-icon: url(%2);\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
135 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
136 "\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
137 "QDockWidget::close-button, QDockWidget::float-button\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
138 "{\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
139 " border: none;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
140 " icon-size: %3px;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
141 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
142 "\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
143 "QAbstractButton#qt_dockwidget_closebutton\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
144 "{\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
145 " qproperty-toolTip: \"%4\";\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
146 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
147 "\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
148 "QAbstractButton#qt_dockwidget_floatbutton\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
149 "{\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
150 " qproperty-toolTip: \"%5\";\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
151 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
152 "\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
153 "QDockWidget::title {\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
154 " text-align: left;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
155 "%7"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
156 " padding-left: 1px;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
157 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
158 "\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
159 "QDockWidget::close-button\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
160 "{\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
161 " right: %8px;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
162 " top: 3px;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
163 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
164 "\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
165 "QDockWidget::float-button\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
166 "{\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
167 " right: %9px;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
168 " top: 3px;\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
169 "}\n"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
170 ).arg (close_icon).arg (float_icon).arg (icon_size)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
171 .arg (close_tooltip).arg (float_tooltip)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
172 .arg (titlebar_foreground). arg (titlebar_background)
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
173 .arg ((icon_size*2)/3). arg((icon_size*7)/3);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
174 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
175
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
176 octave_dock_widget::octave_dock_widget (const QString& obj_name, QWidget *p)
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
177 : label_dock_widget (p), m_recent_float_geom (), m_recent_dock_geom (),
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
178 m_waiting_for_mouse_button_release (false)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
179 {
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
180 setObjectName (obj_name);
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
181
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
182 m_parent = static_cast<QMainWindow *> (p); // store main window
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
183 m_predecessor_widget = nullptr;
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
184
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
185 connect (this, SIGNAL (topLevelChanged (bool)),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
186 this, SLOT (toplevel_change (bool)));
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
187 connect (this, SIGNAL (visibilityChanged (bool)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
188 this, SLOT (handle_visibility_changed (bool)));
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
189
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
190 connect (p, SIGNAL (settings_changed (const QSettings*)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
191 this, SLOT (handle_settings (const QSettings*)));
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
192
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
193 connect (p, SIGNAL (active_dock_changed (octave_dock_widget*,
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
194 octave_dock_widget*)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
195 this, SLOT (handle_active_dock_changed (octave_dock_widget*,
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
196 octave_dock_widget*)));
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
197
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
198 if (m_default_float_button != nullptr)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
199 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
200 disconnect (m_default_float_button, 0, 0, 0);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
201 connect (m_default_float_button, SIGNAL (clicked (bool)),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
202 this, SLOT (make_window (bool)));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
203 }
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
204 connect (this, SIGNAL (queue_make_window (bool)),
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
205 this, SLOT (make_window (bool)), Qt::QueuedConnection);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
206 connect (this, SIGNAL (queue_make_widget ()),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
207 this, SLOT (make_widget ()), Qt::QueuedConnection);
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
208
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
209 connect (m_dock_action, SIGNAL (triggered (bool)),
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
210 this, SLOT (make_window (bool)));
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
211 connect (m_close_action, SIGNAL (triggered (bool)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
212 this, SLOT (change_visibility (bool)));
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
213
27302
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
214 // Any interpreter_event signal from an octave_dock_widget object is
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
215 // handled the same as for the parent main_window object.
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
216
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
217 connect (this, SIGNAL (interpreter_event (const fcn_callback&)),
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
218 p, SIGNAL (interpreter_event (const fcn_callback&)));
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
219
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
220 connect (this, SIGNAL (interpreter_event (const meth_callback&)),
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
221 p, SIGNAL (interpreter_event (const meth_callback&)));
5f170ea12fa1 use Qt signals to pass interpreter callbacks to octave-qobject
John W. Eaton <jwe@octave.org>
parents: 27281
diff changeset
222
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
223 m_close_action->setToolTip (tr ("Hide widget"));
24812
ed9ba20d6ed3 Make the variable editor multi-panel via a QMainWindow layout (bug #53046)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24696
diff changeset
224
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
225 setStyleSheet (qdockwidget_css (QString (":/actions/icons/widget-close.png"),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
226 QString ("Close widget"),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
227 QString (":/actions/icons/widget-undock.png"),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
228 QString ("Undock widget"),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
229 m_icon_size,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
230 QString (""),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
231 QString ("")));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
232 if (widget ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
233 widget ()->setToolTip (QString (""));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
234
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
235 m_icon_color = "";
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
236 m_title_3d = 50;
19360
2f9d9663b6b0 fix double clicks into the borders of floating dock widgets (bug #43662)
Torsten <ttl@justmail.de>
parents: 18555
diff changeset
237
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
238 installEventFilter (this);
19360
2f9d9663b6b0 fix double clicks into the borders of floating dock widgets (bug #43662)
Torsten <ttl@justmail.de>
parents: 18555
diff changeset
239
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
240 setFocusPolicy (Qt::StrongFocus);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
241
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
242 setFeatures (QDockWidget::AllDockWidgetFeatures);
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
243
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
244 handle_settings (resource_manager::get_settings ());
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
245 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
246
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
247 // connect signal visibility changed to related slot (called from main-window)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
248 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
249 octave_dock_widget::connect_visibility_changed (void)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
250 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
251 connect (this, SIGNAL (visibilityChanged (bool)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
252 this, SLOT (handle_visibility (bool)));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
253 emit active_changed (isVisible ()); // emit once for init of window menu
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
254 }
16809
84505f200e05 fix checked state of window menu entries at startup (bug #39322)
Torsten <ttl@justmail.de>
parents: 16798
diff changeset
255
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
256 // make the widget floating
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
257 void
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
258 octave_dock_widget::make_window (bool widget_was_dragged)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
259 {
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
260 bool vis = isVisible ();
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
261
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
262 // prevent follow-up calls by clearing state variable
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
263 m_waiting_for_mouse_button_release = false;
17686
65544374c1cf restore (un)docking of widgets without reparenting on non-windows systems
Torsten <ttl@justmail.de>
parents: 17090
diff changeset
264
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
265 set_focus_predecessor (); // set focus previously active widget if tabbed
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
266
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
267 // Before unparenting, get current geometry for restoring if dragged
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
268 QRect geom = geometry ();
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
269
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
270 // the widget has to be reparented (parent = 0), preferably
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
271 // from a non-toplevel widget otherwise may not have full
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
272 // decorations, e.g., no taskbar icon and always in front
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
273 if (isFloating ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
274 setFloating (false);
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
275
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
276 // Remove after thorough testing 3/20/18 m_parent->removeDockWidget (this);
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
277
25509
e00aa6a75edd Do not make floated widgets a Qt::Window to conserve title bar (bug #54078)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25396
diff changeset
278 setParent (0, Qt::CustomizeWindowHint | Qt::WindowTitleHint |
25887
ad3417a54be6 Keep QWindow flag when setting parent in undocked mode (Bug #54495)
John Donoghue
parents: 25509
diff changeset
279 Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint | Qt::Window);
24570
c9aab297130e make floating dock widgets resizable in KDE Oxygen (bug #52797)
Torsten <mttl@mailbox.org>
parents: 24534
diff changeset
280
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
281 // restore the last geometry when floating only if we have not dragged
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
282 // the window outside the main window
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
283 if (! widget_was_dragged)
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
284 geom = m_recent_float_geom.isNull () ? QRect (50,100,480,480)
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
285 : m_recent_float_geom;
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
286 setGeometry (geom);
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
287
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
288 // adjust the (un)dock icon
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
289 if (titleBarWidget ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
290 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
291 m_dock_action->setIcon (QIcon (":/actions/icons/widget-dock"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
292 + m_icon_color + ".png"));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
293 m_dock_action->setToolTip (tr ("Dock widget"));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
294 disconnect (m_dock_action, 0, this, 0);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
295 connect (m_dock_action, SIGNAL (triggered (bool)),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
296 this, SLOT (make_widget (bool)));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
297 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
298 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
299 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
300 disconnect (m_default_float_button, 0, this, 0);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
301 connect (m_default_float_button, SIGNAL (clicked (bool)),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
302 this, SLOT (make_widget (bool)));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
303 }
17686
65544374c1cf restore (un)docking of widgets without reparenting on non-windows systems
Torsten <ttl@justmail.de>
parents: 17090
diff changeset
304
25384
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
305 raise ();
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
306 activateWindow ();
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
307
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
308 if (vis)
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
309 {
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
310 show ();
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
311 setFocus ();
25384
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
312 set_style (true);
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
313 }
27089
9326c2258e60 fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26818
diff changeset
314
9326c2258e60 fix visibility of find dialog when editor is docked/undocked (bug #5)
Torsten Lilge <ttl-octave@mailbox.org>
parents: 26818
diff changeset
315 emit topLevelChanged (true); // Be sure signal is emitted
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
316 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
317
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
318 // dock the widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
319 void
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
320 octave_dock_widget::make_widget (bool)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
321 {
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
322 bool vis = isVisible ();
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
323
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
324 // Since floating widget has no parent, we have to read it
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
325 QSettings *settings = resource_manager::get_settings ();
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
326
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
327 settings->setValue ("MainWindow/windowState", m_parent->saveState ());
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
328 // Stay window, otherwise will bounce back to window by default because
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
329 // there is no layout information for this widget in the saved settings.
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
330 setParent (m_parent, Qt::Window);
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
331 m_parent->addDockWidget (Qt::BottomDockWidgetArea, this);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
332 // recover old window states, hide and re-show new added widget
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
333 m_parent->restoreState (settings->value ("MainWindow/windowState").toByteArray ());
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
334 setFloating (false);
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
335
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
336 // adjust the (un)dock icon
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
337 if (titleBarWidget ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
338 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
339 m_dock_action->setIcon (QIcon (":/actions/icons/widget-undock"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
340 + m_icon_color + ".png"));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
341 m_dock_action->setToolTip (tr ("Undock widget"));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
342 disconnect (m_dock_action, 0, this, 0);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
343 connect (m_dock_action, SIGNAL (triggered (bool)),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
344 this, SLOT (make_window (bool)));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
345 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
346 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
347 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
348 disconnect (m_default_float_button, 0, this, 0);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
349 connect (m_default_float_button, SIGNAL (clicked (bool)),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
350 this, SLOT (make_window (bool)));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
351 }
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
352
25384
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
353 raise ();
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
354 QApplication::setActiveWindow (this);
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
355
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
356 if (vis)
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
357 {
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
358 show ();
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
359 setFocus ();
25384
9b67c2294129 fix missing title bar highlighting when (un)docking a widget
Torsten <mttl@mailbox.org>
parents: 25373
diff changeset
360 set_style (true);
25356
1008b4797a6e fix visibility of dock widgets at startup
Torsten <mttl@mailbox.org>
parents: 25355
diff changeset
361 }
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
362 }
17686
65544374c1cf restore (un)docking of widgets without reparenting on non-windows systems
Torsten <ttl@justmail.de>
parents: 17090
diff changeset
363
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
364 // dock the widget
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
365 void
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
366 octave_dock_widget::default_dock (bool)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
367 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
368 setFloating (false);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
369 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
370
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
371 // set the widget which previously had focus when tabified
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
372 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
373 octave_dock_widget::set_predecessor_widget (octave_dock_widget *prev_widget)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
374 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
375 m_predecessor_widget = prev_widget;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
376 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
377
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
378 // close event
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
379 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
380 octave_dock_widget::closeEvent (QCloseEvent *e)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
381 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
382 emit active_changed (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
383 set_focus_predecessor ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
384 QDockWidget::closeEvent (e);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
385 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
386
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
387 // get focus widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
388 QWidget *
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
389 octave_dock_widget::focusWidget (void)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
390 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
391 QWidget *w = QApplication::focusWidget ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
392 if (w && w->focusProxy ()) w = w->focusProxy ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
393 return w;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
394 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
395
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
396 bool
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
397 octave_dock_widget::event (QEvent *event)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
398 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
399 // low-level check of whether docked-widget became a window via
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
400 // double-click or via drag-and-drop
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
401 if ( (event->type () == QEvent::MouseButtonDblClick && ! isFloating ())
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
402 || (event->type () == QEvent::ActivationChange && m_waiting_for_mouse_button_release))
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
403 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
404 bool retval = QDockWidget::event (event);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
405 if (isFloating () && parent () != 0)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
406 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
407 m_waiting_for_mouse_button_release = false;
26818
f7b10bd40045 fix dock widget position when being dragged out of the main window (bug #55704)
Torsten <mttl@mailbox.org>
parents: 26452
diff changeset
408 emit queue_make_window (event->type () != QEvent::MouseButtonDblClick);
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
409 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
410 return retval;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
411 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
412
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
413 return QDockWidget::event (event);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
414 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
415
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
416 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
417 octave_dock_widget::handle_settings (const QSettings *settings)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
418 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
419 m_custom_style
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
420 = settings->value ("DockWidgets/widget_title_custom_style",false).toBool ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
421
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
422 m_title_3d
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
423 = settings->value ("DockWidgets/widget_title_3d",50).toInt ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
424
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
425 QColor default_var = QColor (0,0,0);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
426 m_fg_color = settings->value ("DockWidgets/title_fg_color",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
427 default_var).value<QColor> ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
428 default_var = QColor (0,0,0);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
429 m_fg_color_active = settings->value ("DockWidgets/title_fg_color_active",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
430 default_var).value<QColor> ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
431
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
432 default_var = QColor (255,255,255);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
433 m_bg_color = settings->value ("DockWidgets/title_bg_color",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
434 default_var).value<QColor> ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
435 default_var = QColor (192,192,192);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
436 m_bg_color_active = settings->value ("DockWidgets/title_bg_color_active",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
437 default_var).value<QColor> ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
438
24842
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
439 QColor bcol (m_bg_color);
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
440 QColor bcola (m_bg_color_active);
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
441
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
442 if (! m_custom_style)
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
443 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
444 bcol = QWidget::palette ().color (m_title_widget->backgroundRole ());
24842
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
445 bcola = bcol;
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
446 }
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
447
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
448 int r, g, b;
24842
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
449 bcol.getRgb (&r, &g, &b);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
450 if (r+g+b < 400)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
451 m_icon_color = "-light";
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
452 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
453 m_icon_color = "";
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
454
24842
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
455 bcola.getRgb (&r, &g, &b);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
456 if (r+g+b < 400)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
457 m_icon_color_active = "-light";
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
458 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
459 m_icon_color_active = "";
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
460
26428
93c4fabb2ead only reset floating geometry of dock widget when not visible (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
461 QRect available_size = QApplication::desktop ()->availableGeometry (m_parent);
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
462 int x1, y1, x2, y2;
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
463 available_size.getCoords (&x1, &y1, &x2, &y2);
26452
abe3e8597a55 default geometry of floating widgets not exactly in upper left corner (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26428
diff changeset
464 QRect default_size = QRect (x1+16, y1+32, x2/3, 2*y2/3);
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
465
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
466 m_recent_float_geom = settings->value ("DockWidgets/" + objectName ()
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
467 + "_floating_geometry",
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
468 default_size).toRect ();
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
469
26428
93c4fabb2ead only reset floating geometry of dock widget when not visible (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
470 QWidget dummy;
93c4fabb2ead only reset floating geometry of dock widget when not visible (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
471 dummy.setGeometry (m_recent_float_geom);
93c4fabb2ead only reset floating geometry of dock widget when not visible (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
472
93c4fabb2ead only reset floating geometry of dock widget when not visible (bug #53207)
Torsten <mttl@mailbox.org>
parents: 26376
diff changeset
473 if (QApplication::desktop ()->screenNumber (&dummy) == -1)
26299
c95884eed1cf make restoring gui more robust to changes of desktop size (bug #53207)
Torsten <mttl@mailbox.org>
parents: 25907
diff changeset
474 m_recent_float_geom = default_size;
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
475
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
476 m_recent_dock_geom = settings->value ("DockWidgets/" + objectName (),
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
477 QByteArray ()).toByteArray ();
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
478
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
479 notice_settings (settings); // call individual handler
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
480
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
481 set_style (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
482 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
483
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
484 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
485 octave_dock_widget::handle_active_dock_changed (octave_dock_widget *w_old,
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
486 octave_dock_widget *w_new)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
487 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
488 if (m_custom_style && this == w_old)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
489 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
490 set_style (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
491 update ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
492 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
493
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
494 if (m_custom_style && this == w_new)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
495 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
496 set_style (true);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
497 update ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
498 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
499 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
500
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
501 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
502 octave_dock_widget::save_settings (void)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
503 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
504 // save state of this dock-widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
505 QString name = objectName ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
506 QSettings *settings = resource_manager::get_settings ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
507
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
508 if (! settings)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
509 return;
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
510
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
511 store_geometry ();
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
512
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
513 settings->beginGroup ("DockWidgets");
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
514
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
515 // conditional needed?
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
516 if (! m_recent_float_geom.isNull ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
517 settings->setValue (name + "_floating_geometry", m_recent_float_geom);
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
518
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
519 if (! m_recent_dock_geom.isEmpty ())
25355
5bb07f6e3707 fix uninitialized settings of octave dock widgets at startup (bug #53835)
Torsten <mttl@mailbox.org>
parents: 25354
diff changeset
520 settings->setValue (name, m_recent_dock_geom);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
521 settings->setValue (name+"Visible", isVisible ()); // store visibility
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
522 settings->setValue (name+"Floating", isFloating ()); // store floating
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
523 settings->setValue (name+"_minimized", isMinimized ()); // store minimized
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
524
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
525 settings->endGroup ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
526 settings->sync ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
527 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
528
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
529 bool octave_dock_widget::eventFilter (QObject *obj, QEvent *e)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
530 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
531 if (e->type () == QEvent::NonClientAreaMouseButtonDblClick)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
532 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
533 e->ignore (); // ignore double clicks into window decoration elements
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
534 return true;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
535 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
536
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
537 return QDockWidget::eventFilter (obj,e);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
538 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
539
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
540 void
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
541 octave_dock_widget::store_geometry (void)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
542 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
543 if (isFloating ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
544 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
545 if (! parent ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
546 m_recent_float_geom = geometry ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
547 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
548 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
549 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
550 m_recent_dock_geom = saveGeometry ();
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
551 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
552 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
553
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
554 void
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
555 octave_dock_widget::moveEvent (QMoveEvent *event)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
556 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
557 store_geometry ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
558
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
559 QDockWidget::moveEvent (event);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
560 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
561
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
562 void
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
563 octave_dock_widget::resizeEvent (QResizeEvent *event)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
564 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
565 store_geometry ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
566
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
567 QDockWidget::resizeEvent (event);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
568 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
569
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
570 // slot for hiding the widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
571 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
572 octave_dock_widget::change_visibility (bool)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
573 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
574 setVisible (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
575 emit active_changed (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
576 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
577
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
578 void octave_dock_widget::activate (void)
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
579 {
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
580 if (! isVisible ())
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
581 setVisible (true);
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
582
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
583 setFocus ();
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
584 activateWindow ();
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
585 raise ();
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
586 }
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
587
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
588 void octave_dock_widget::handle_visibility (bool visible)
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
589 {
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
590 if (visible && ! isFloating ())
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
591 setFocus ();
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
592 }
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
593
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
594 void
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
595 octave_dock_widget::toplevel_change (bool toplevel)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
596 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
597 QObject *dockobj;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
598 const char *docksig;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
599
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
600 if (titleBarWidget ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
601 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
602 dockobj = m_dock_action;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
603 docksig = SIGNAL (triggered (bool));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
604 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
605 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
606 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
607 dockobj = m_default_float_button;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
608 docksig = SIGNAL (clicked (bool));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
609 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
610
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
611 if (toplevel)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
612 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
613 // This is a fallback in case the attempt to create a floated
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
614 // top-level window fails and the QDockWidget remains a child
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
615 // of the QMainWindow.
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
616 connect (dockobj, docksig, this, SLOT (default_dock (bool)));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
617
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
618 // Could be dragging window, so must wait until there is a
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
619 // change in focus.
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
620 if (parent () != 0)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
621 m_waiting_for_mouse_button_release = true;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
622 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
623 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
624 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
625 // If a drag-and-drop within the QMainWindow occurred, want to remain a widget.
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
626 m_waiting_for_mouse_button_release = false;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
627
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
628 // Making into a widget immediately will mangle the double-click
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
629 // status and cause problems on followup button clicks.
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
630 if (parent () == 0)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
631 emit queue_make_widget ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
632 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
633 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
634
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
635 void
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
636 octave_dock_widget::set_style (bool active)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
637 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
638 QString css_foreground;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
639 QString css_background;
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
640 QString css_button;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
641 QString dock_icon;
18218
7952fb0435db improve title bar of dock widgets
Torsten <ttl@justmail.de>
parents: 18180
diff changeset
642
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
643 QString icon_col = m_icon_color;
19431
bd27cd403d00 fix errors when building octave for windows (regression from d93293218966)
Torsten <ttl@justmail.de>
parents: 19423
diff changeset
644
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
645 QString close_tooltip = "Close widget";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
646 QString dock_tooltip;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
647
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
648 if (isFloating ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
649 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
650 dock_icon = "widget-dock";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
651 dock_tooltip = "Dock widget";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
652 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
653 else
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
654 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
655 dock_icon = "widget-undock";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
656 dock_tooltip = "Undock widget";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
657 }
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
658
20794
e870a68742a6 change alignment of dock widget titles for OSX (bug #46592)
Torsten <ttl@justmail.de>
parents: 20630
diff changeset
659 #if defined (Q_OS_MAC)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
660 QString alignment = "center";
20794
e870a68742a6 change alignment of dock widget titles for OSX (bug #46592)
Torsten <ttl@justmail.de>
parents: 20630
diff changeset
661 #else
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
662 QString alignment = "center left";
20794
e870a68742a6 change alignment of dock widget titles for OSX (bug #46592)
Torsten <ttl@justmail.de>
parents: 20630
diff changeset
663 #endif
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
664 if (m_custom_style)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
665 {
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
666
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
667 QColor bg_col, fg_col;
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
668
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
669 if (active)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
670 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
671 bg_col = m_bg_color_active;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
672 fg_col = m_fg_color_active;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
673 icon_col = m_icon_color_active;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
674 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
675 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
676 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
677 bg_col = m_bg_color;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
678 fg_col = m_fg_color;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
679 icon_col = m_icon_color;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
680 }
18218
7952fb0435db improve title bar of dock widgets
Torsten <ttl@justmail.de>
parents: 18180
diff changeset
681
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
682 QColor bg_col_top, bg_col_bottom;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
683 if (m_title_3d > 0)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
684 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
685 bg_col_top = bg_col.lighter (100 + m_title_3d);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
686 bg_col_bottom = bg_col.darker (100 + m_title_3d);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
687 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
688 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
689 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
690 bg_col_top = bg_col.darker (100 - m_title_3d);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
691 bg_col_bottom = bg_col.lighter (100 - m_title_3d);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
692 }
19913
2a992bd19169 make color gradient of custom title bar adjustable (bug #44435)
Torsten <ttl@justmail.de>
parents: 19911
diff changeset
693
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
694 css_foreground = QString (" color: %1;\n").arg (fg_col.name ());
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
695
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
696 css_background =
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
697 QString (" background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
698 " stop: 0 %1, stop: 0.60 %2, stop: 0.95 %2 stop: 1.0 %3);\n").
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
699 arg (bg_col_top.name ()).
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
700 arg (bg_col.name ()).
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
701 arg (bg_col_bottom.name ());
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
702 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
703 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
704 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
705 css_foreground = QString ("");
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
706 css_background = QString ("");
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
707 }
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
708
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
709 QString full_dock_icon = ":/actions/icons/" + dock_icon + icon_col + ".png";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
710 QString full_close_icon = ":/actions/icons/widget-close" + icon_col + ".png";
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
711 if (titleBarWidget ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
712 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
713 titleBarWidget ()->setStyleSheet (css_foreground + css_background);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
714 css_button = QString ("QToolButton {background: transparent; border: 0px;}");
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
715 m_dock_button->setStyleSheet (css_button);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
716 m_close_button->setStyleSheet (css_button);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
717 m_dock_action->setIcon (QIcon (full_dock_icon));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
718 m_close_action->setIcon (QIcon (full_close_icon));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
719 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
720 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
721 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
722 setStyleSheet (qdockwidget_css (full_close_icon,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
723 close_tooltip,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
724 full_dock_icon,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
725 dock_tooltip,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
726 m_icon_size,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
727 css_foreground,
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
728 css_background));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
729 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
730 }
19423
d93293218966 custom style of dock widget title bars depending on focus (bug #43837)
Torsten <ttl@justmail.de>
parents: 19360
diff changeset
731
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
732 // set focus to previously active widget in tabbed widget stack
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
733 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
734 octave_dock_widget::set_focus_predecessor (void)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
735 {
25396
75fef3484d12 Prevent hidden predecessor windows appearing when successor is floated (bug #53357)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25384
diff changeset
736 // only != 0 if widget was tabbed
75fef3484d12 Prevent hidden predecessor windows appearing when successor is floated (bug #53357)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25384
diff changeset
737 if (m_predecessor_widget && m_predecessor_widget->isVisible ())
27281
0915fec3d3a9 prevent gui from catching focus when its desktop workspace becomes active
Torsten Lilge <ttl-octave@mailbox.org>
parents: 27255
diff changeset
738 m_predecessor_widget->setFocus ();
19423
d93293218966 custom style of dock widget title bars depending on focus (bug #43837)
Torsten <ttl@justmail.de>
parents: 19360
diff changeset
739
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
740 m_predecessor_widget = nullptr;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
741 // FIXME: Until cset bda0c5b38bda, the wrong keys "Dockwidget/..." were used
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
742 // here. This had no effect in Qt4, but does in Qt5. In the following, the
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
743 // four incorrect keys are updated if still present in the settings files.
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
744 // The keys are also used in the settings dialog, but
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
745 // octave_dock_widget::handle_settings is already called at program start.
25172
7b1b504c2f12 update future version numbers in doc strings and comments
John W. Eaton <jwe@octave.org>
parents: 25086
diff changeset
746 // These tests can be removed in a future version of Octave (version 6).
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
747 resource_manager::update_settings_key ("Dockwidgets/title_bg_color",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
748 "DockWidgets/title_bg_color");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
749 resource_manager::update_settings_key ("Dockwidgets/title_bg_color_active",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
750 "DockWidgets/title_bg_color_active");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
751 resource_manager::update_settings_key ("Dockwidgets/title_fg_color",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
752 "DockWidgets/title_fg_color");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
753 resource_manager::update_settings_key ("Dockwidgets/title_fg_color_active",
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
754 "DockWidgets/title_fg_color_active");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
755 }
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
756 }