annotate libgui/src/octave-dock-widget.cc @ 25354:05a690606fd5

Use default title bar to preserve GUI float decorations (bug #53276) * QUnixTerminalImpl.cpp (QUnixTerminalImpl::setBackgroundColor): Use cascading style sheets to set the background color of the TerminalView. * documentation-dock-widget.cc (constructor): Use setWindowTitle() for default title bar instead of set_title(). * files-dock-widget.cc (constructor): Ditto. * history-dock-widget.cc (history_dock_widget::construct): Ditto. * file-editor.cc (file_editor::construct): Ditto. * terminal-dock-widget.cc (constructor): Ditto. * workspace-view.cc (constructor): Ditto. * octave-dock-widget.cc (label_dock_widget::label_dock_widget): Initialize m_default_float_button and m_default_close_button to nullptr then check for the existence of these buttons in the default title bar. Change spacing between title bar icons from 0 to 10. Do not call setTitleBarWidget(). (label_dock_widget::set_title): Use m_title_widget for pointer instead of titleBarWidget(). Call setTitleBarWidget(m_title_widget) to activate use of custom title bar. (qdockwidget_css): Added. New local routine that constructs the cascading style sheet for the QDockWidget used in several places. (octave_dock_widget::octave_dock_widget): Initialize m_recent_float_geom, m_recent_dock_area, m_recent_dock_geom, m_waiting_for_mouse_button_release. Remove m_floating. Connect the topLevelChanged() signal to the toplevel_change() slot. Do not restrict features floatable and closeable. If the m_default_float_button was found, disconnect its default slots and connect it instead to slot make_window(). Enable queuing of make_window() via the queue_make_window() signal. Enable queuing of make_widget() via the queue_make_widget() signal. Connect the m_dock_action triggered() signal to make_window() slot rather than change_floating(). Set the style sheet (icons and tooltips) for the dockable widget and disable the main widget's tooltip. Set all dock widget features. (octave_dock_widget::make_window): Change the input to be bool (unused) so that the function can be used as a slot. Prevent follow-up calls by setting m_waiting_for_mouse_button_release to 'false'. Set focus to the predecessor in tab list. Set floating off prior to making it a toplevel window. Do not perform a second reparent with a custom title bar. Get geometry from m_recent_float_geom rather than settings. Drop use of m_floating. Make the (un)dock icon adjustment more elaborate by using style sheets via the set_style() function. Disconnect the existing behavior and connect the "make widget" behavior into the appropriate button/action. Call raise(), show(), activateWindow() and setFocus() to bring the new window to the front of the GUI desktop. (octave_dock_widget::make_widget): Drop the dock/not-dock logic. When adding widget back to parent window set the area to m_recent_dock_area. Make the (un)dock icon adjustment more elaborate by using style sheets via set_style() function. Disconnect the existing behavior and connect the "make window" behavior into the appropriate button/action. (octave_dock_widget::default_dock): Added. Simply call base setFloating() with argument "false". (octave_dock_widget::event): Reimplement the virtual low-level function to check if a conversion from widget to window took place as a result of a double-click or if a button release took place after a window drag, and if so set m_waiting_for_mouse_button_release to 'false' and emit a queued make_window(). (octave_dock_widget::handle_settings): Get the geometry and docked layout information, stored in m_recent_float_geom, m_recent_dock_area and m_recent_dock_geom. (octave_dock_widget::save_settings): Get saved geometry info from m_recent_float_geom, m_recent_dock_area and m_recent_dock_geom. Use isFloating() rather than m_floating for "Floating" state. (octave_dock_widget::change_floating): Removed. (octave_dock_widget::store_geometry): Added. Reuasable routine to save geometry and dock info in the appropriate variables based on isFloating() state. (octave_dock_widget::moveEvent): Added. Reimplemented virtual routine to store the geometry whenever the widget is moved. (octave_dock_widget::resizeEvent): Added. Reimplemented virtual routine to store the geometry whenever the widget is resized. (octave_dock_widget::toplevel_change): Added. Puts a fallback behavior in place in case the transition to a toplevel window fails on some OS. Also, handles drag-to-float by setting m_waiting_for_mouse_button_release to 'true' if toplevel input is true. If toplevel input is false, set m_waiting_for_mouse_button_release to 'false'. If need to reparent, emit queue_make_widget() to avoid button-click/double-click corruption. (octave_dock_widget::set_style): Use isFloating() instead of m_floating. Condition the style changes to custom title bar widgets on titleBarWidget() and use CSS style sheets to match the default title bar color scheme to that of the custom title bar. Break the css into string variables css_foreground and css_background providing better control in the qdockwidget_css() routine. * octave-dock-widget.h (label_dock_widget:QDockWidget): Add pointers m_default_float_button and m_default_close_button. (label_dock_widget::set_title): Add note about selecting use of default or custom title bar via this routine. (octave_dock_widget:label_dock_widget): Add variables m_recent_float_geom, m_recent_dock_area, m_recent_dock_geom for avoiding using the file settings as an intermediate storage space. Add boolean variable m_waiting_for_mouse_button_release for implementing a single delayed make_window() if needed. (octave_dock_widget::make_window): Change to a public slot with an unused bool input variable. (octave_dock_widget::make_widget): Change to a public slot. (octave_dock_widget::queue_make_window): Added. New signal to queue make_window() and avoid crash when calling make_widget() directly. (octave_dock_widget::queue_make_widget): Added. New signal to queue make_widget() and avoid mouse click corruption when calling make_widget() directly. (octave_dock_widget::event): Added. Reimplement low-level event() routine, check for double-click float and for drag-and-drop float. (octave_dock_widget::moveEvent): Added. Declartion of reimplemented virtual routine. (octave_dock_widget::resizeEvent): Ditto. (octave_dock_widget::default_dock): Added. A simple routine that calls the default setFloating(false). (octave_dock_widget::change_floating): Removed. (octave_dock_widget::toplevel_change): Added. React to topLevelChanged() signal and install the default button action in case toplevel transition fails. Check if (re)parent action needed. (octave_dock_widget::store_geometry): Added. An in-memory copy of the geometry. * variable-editor.cc (variable_dock_widget::variable_dock_widget): Initialize two new state variables m_waiting_for_mouse_move and m_waiting_for_mouse_button_release intending to identify exactly when a float-by-mouse-drag occurs in order to circumvent Qt bug QTBUG-44813. Use pointer m_title_widget instead of titleBarWidget() and construct the layout unconditionally. (variable_dock_widget::toplevel_change): Remove the default input from setFocus(). If toplevel is true, set m_waiting_for_mouse_move in case a mouse-drag occurs. If toplevel is not true, clear the state variables m_waiting_for_mouse_move and m_waiting_for_mouse_button_release. (variable_dock_widget::change_fullscreen): Fix a bug in which geometry was not properly restored during the fullscreen-to-dock transition by moving the copy m_prev_geom after the variable_dock_widget is floated rather than before. (variable_dock_widget::handle_focus_change): Condition the label adjustment on the presence of custom titleBarWidget(). (variable_dock_widget::event): Added. The state-machine logic for detecting a drag-and-drop floating change. When that happens queue a redock-undock. (variable_editor::variable_editor): Use setWindowTitle() for default title bar instead of set_title(). Added to address QTBUG-44813 by using a very simple state machine to identify float-by-mouse-drag from mouse move and button press events. Then emit queue_unfloat_float() to redock and undock the QDockWidget directly which doesn't have the bug. (variable_dock_widget::unfloat_float): Short slot that does setFloating(true) followed by setFloating(false). This code is conditioned on the yet-to-be- fully determined Qt bug range, and need a NULL-function slot routine. (variable_editor::variable_editor): Initialize new variables m_focus_widget and m_focus_widget_vdw to nullptr. Use setWindowTitle() rather than set_title(). (variable_editor::focusInEvent): Make the focusing rules more complex and use the variables m_focus_widget and m_focus_widget_vdw for logic. (variable_editor::focusOutEvent): Removed. (variable_editor::edit_variable): Make the connection between signal queue_unfloat_float() and slot unfloat_float() pre-processor conditioned on the range for Qt bug QTBUG-44813. Condition the connection between the model's update_lable_signal() and label's setText() slot on the presence of custom titleBarWidget(). (variable_editor::variable_destroyed): If the variable_dock_widget that is destroyed matches m_focus_widget_vdw then clear both that variable and m_focus_widget. Make use of the focusInEvent() routine to set the focus to the next logical variable_dock_widget. (variable_editor::variable_focused): Make the association between the currently-focused object and the variable_dock_widget on which it resides. * variable-editor.h (variable_dock_widget:label_dock_widget): Define QTBUG_44813_FIX_VERSION as an indefinite version in the future when Qt developers fix QTBUG-44813. (variable_dock_widget::queue_unfloat_float): Added. New signal. (variable_dock_widget::unfloat_float): Added. New protected slot. (variable_dock_widget::event): Added. Conditioned on QTBUG-44813 range, the overrided virtual function that will identify float-by-mouse-drag scenario. Requires new private Boolean variables m_waiting_for_mouse_move, m_waiting_for_mouse_button_release and m_waiting_for_activation_change. (variable_editor:octave_dock_widget): Change m_variable_focus_widget to m_focus_widget and add variable_dock_widget pointer m_focus_widget_vdw. (variable_editor::focusOutEvent): Removed.
author Daniel J Sebald <daniel.sebald@ieee.org>
date Sun, 06 May 2018 00:19:03 -0500
parents 7b1b504c2f12
children 5bb07f6e3707
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
25054
6652d3823428 maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 24865
diff changeset
3 Copyright (C) 2012-2018 Richard Crozier
6652d3823428 maint: Update copyright dates in all source files.
John W. Eaton <jwe@octave.org>
parents: 24865
diff changeset
4 Copyright (C) 2013-2018 Torsten <ttl@justmail.de>
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 <QToolBar>
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
30 #include <QAction>
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>
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
35
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
36 #include "resource-manager.h"
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
37 #include "octave-dock-widget.h"
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
38
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
39 namespace octave
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
40 {
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
41 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
42 : 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
43 m_default_close_button (nullptr)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
44 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
45 QStyle *st = style ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
46 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
47
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
48 // 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
49 // 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
50 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
51 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
52 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
53 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
54 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
55 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
56 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
57 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
58 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
59 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
60 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
61 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
62 }
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
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
65 // 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
66 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
67
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
68 m_dock_action = new QAction
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
69 (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
70 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
71 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
72 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
73 m_dock_button->setFocusPolicy (Qt::NoFocus);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
74 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
75
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
76 m_close_action = new QAction
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
77 (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
78 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
79 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
80 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
81 m_close_button->setFocusPolicy (Qt::NoFocus);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
82 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
83
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
84 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
85 m_dock_button->setStyleSheet (css_button);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
86 m_close_button->setStyleSheet (css_button);
18218
7952fb0435db improve title bar of dock widgets
Torsten <ttl@justmail.de>
parents: 18180
diff changeset
87
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
88 QHBoxLayout *h_layout = new QHBoxLayout ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
89 h_layout->addStretch (100);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
90 h_layout->addWidget (m_dock_button);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
91 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
92 h_layout->setSpacing (10);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
93 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
94
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
95 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
96
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
97 // copy & paste handling
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
98 connect (p, SIGNAL (copyClipboard_signal ()),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
99 this, SLOT (copyClipboard ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
100 connect (p, SIGNAL (pasteClipboard_signal ()),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
101 this, SLOT (pasteClipboard ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
102 connect (p, SIGNAL (selectAll_signal ()),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
103 this, SLOT (selectAll ()));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
104 // undo handling
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
105 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
106 }
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
107
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
108 // 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
109 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
110 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
111 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
112 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
113 = 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
114 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
115 label->setStyleSheet ("background-color: transparent;");
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
116 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
117 setTitleBarWidget (m_title_widget);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
118 setWindowTitle (title);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
119 }
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
120
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
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
122 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
123 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
124 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
125 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
126 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
127 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
128 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
129 "{\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 "%6"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
131 " 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
132 " 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
133 " 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
134 "}\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 "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
137 "{\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 " 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
139 " 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
140 "}\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 "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
143 "{\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 " 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
145 "}\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 "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
148 "{\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 " 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
150 "}\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 "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
153 " 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
154 "%7"
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
155 " 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
156 "}\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 "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
159 "{\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 " 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
161 " 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
162 "}\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 "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
165 "{\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 " 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
167 " 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
168 "}\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 ).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
170 .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
171 .arg (titlebar_foreground). arg (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
172 .arg ((icon_size*2)/3). arg((icon_size*8)/3);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
173 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
174
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
175 octave_dock_widget::octave_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
176 : label_dock_widget (p), m_recent_float_geom (),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
177 m_recent_dock_area (Qt::NoDockWidgetArea), m_recent_dock_geom (),
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 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
180 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
181 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
182
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
183 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
184 this, SLOT (toplevel_change (bool)));
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
185 connect (this, SIGNAL (visibilityChanged (bool)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
186 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
187
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
188 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
189 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
190
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
191 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
192 octave_dock_widget*)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
193 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
194 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
195
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
196 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
197 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
198 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
199 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
200 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
201 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
202 connect (this, SIGNAL (queue_make_window ()),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
203 this, SLOT (make_window ()), Qt::QueuedConnection);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
204 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
205 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
206
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
207 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
208 this, SLOT (make_window (bool)));
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
209 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
210 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
211
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
212 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
213
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
214 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
215 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
216 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
217 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
218 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
219 QString (""),
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
220 QString ("")));
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
221 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
222 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
223
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
224 m_icon_color = "";
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
225 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
226
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
227 installEventFilter (this);
19360
2f9d9663b6b0 fix double clicks into the borders of floating dock widgets (bug #43662)
Torsten <ttl@justmail.de>
parents: 18555
diff changeset
228
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
229 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
230
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
231 setFeatures (QDockWidget::AllDockWidgetFeatures);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
232 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
233
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
234 // 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
235 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
236 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
237 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
238 connect (this, SIGNAL (visibilityChanged (bool)),
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
239 this, SLOT (handle_visibility (bool)));
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
240 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
241 }
16809
84505f200e05 fix checked state of window menu entries at startup (bug #39322)
Torsten <ttl@justmail.de>
parents: 16798
diff changeset
242
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
243 // make the widget floating
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
244 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
245 octave_dock_widget::make_window (bool)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
246 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
247 // 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
248 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
249
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
250 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
251
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
252 // 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
253 // 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
254 // 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
255 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
256 setFloating (false);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
257 // Remove after thorough testing 3/20/18 m_parent->removeDockWidget (this);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
258 setParent (0, Qt::Window | Qt::CustomizeWindowHint | Qt::WindowTitleHint |
24865
5f7b9ee5b878 Add a QFrame to the variable editor panels and adjust tooltips (bug #53275)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 24858
diff changeset
259 Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint);
24570
c9aab297130e make floating dock widgets resizable in KDE Oxygen (bug #52797)
Torsten <mttl@mailbox.org>
parents: 24534
diff changeset
260
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
261 // restore the last geometry when floating
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
262 QRect geom = m_recent_float_geom.isNull () ? QRect (50,100,480,480)
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_recent_float_geom;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
264 setGeometry (geom);
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
265
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
266 // 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
267 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
268 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
269 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
270 + 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
271 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
272 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
273 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
274 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
275 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
276 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
277 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
278 set_style (isActiveWindow ());
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
279 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
280 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
281 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
282 }
17686
65544374c1cf restore (un)docking of widgets without reparenting on non-windows systems
Torsten <ttl@justmail.de>
parents: 17090
diff changeset
283
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
284 raise ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
285 show ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
286 activateWindow ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
287 setFocus ();
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
288 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
289
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
290 // dock the widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
291 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
292 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
293 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
294 // 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
295 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
296
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
297 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
298 // 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
299 // 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
300 setParent (m_parent, Qt::Window);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
301 m_parent->addDockWidget (m_recent_dock_area, this);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
302 // 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
303 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
304 setFloating (false);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
305 show ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
306 QApplication::setActiveWindow (this);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
307 focus ();
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
308
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
309 // 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
310 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
311 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
312 #if defined (Q_OS_UNIX)
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
313 m_title_widget->setToolTip ("");
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
314 #endif
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
315 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
316 + 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
317 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
318 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
319 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
320 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
321 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
322 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
323 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
324 set_style (isActiveWindow ());
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
325 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
326 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
327 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
328 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
329 }
17686
65544374c1cf restore (un)docking of widgets without reparenting on non-windows systems
Torsten <ttl@justmail.de>
parents: 17090
diff changeset
330
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
331 // 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
332 void
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
333 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
334 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
335 setFloating (false);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
336 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
337
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
338 // 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
339 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
340 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
341 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
342 m_predecessor_widget = prev_widget;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
343 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
344
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
345 // close event
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
346 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
347 octave_dock_widget::closeEvent (QCloseEvent *e)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
348 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
349 emit active_changed (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
350 set_focus_predecessor ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
351 QDockWidget::closeEvent (e);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
352 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
353
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
354 // get focus widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
355 QWidget *
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
356 octave_dock_widget::focusWidget (void)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
357 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
358 QWidget *w = QApplication::focusWidget ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
359 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
360 return w;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
361 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
362
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
363 bool
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
364 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
365 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
366 // 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
367 // double-click or via drag-and-drop
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
368 if ((event->type () == QEvent::MouseButtonDblClick && ! isFloating ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
369 || (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
370 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
371 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
372 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
373 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
374 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
375 emit queue_make_window ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
376 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
377 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
378 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
379
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
380 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
381 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
382
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
383 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
384 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
385 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
386 m_custom_style
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
387 = 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
388
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
389 m_title_3d
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
390 = 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
391
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
392 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
393 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
394 default_var).value<QColor> ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
395 default_var = QColor (0,0,0);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
396 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
397 default_var).value<QColor> ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
398
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
399 default_var = QColor (255,255,255);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
400 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
401 default_var).value<QColor> ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
402 default_var = QColor (192,192,192);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
403 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
404 default_var).value<QColor> ();
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
405
24842
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
406 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
407 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
408
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
409 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
410 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
411 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
412 bcola = bcol;
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
413 }
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
414
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
415 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
416 bcol.getRgb (&r, &g, &b);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
417 if (r+g+b < 400)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
418 m_icon_color = "-light";
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
419 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
420 m_icon_color = "";
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
421
24842
74229798f604 always select suitable icon color for sock widgets depending on title bar color
Torsten <mttl@mailbox.org>
parents: 24836
diff changeset
422 bcola.getRgb (&r, &g, &b);
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
423 if (r+g+b < 400)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
424 m_icon_color_active = "-light";
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
425 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
426 m_icon_color_active = "";
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
427
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
428 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
429 + "_floating_geometry",
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
430 QRect (50,100,480,480)).toRect ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
431
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
432 #if 0
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
433 m_recent_dock_area = 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
434 + "_dock_area", Qt::NoDockWidgetArea).toInt ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
435 #else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
436 m_recent_dock_area = Qt::NoDockWidgetArea;
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
437 #endif
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
438
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
439 #if 0
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
440 m_recent_dock_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
441 QByteArray ()).toRect ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
442 #else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
443 m_recent_dock_geom = QByteArray ();
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
444 #endif
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
445
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
446 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
447
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
448 set_style (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
449 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
450
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
451 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
452 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
453 octave_dock_widget *w_new)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
454 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
455 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
456 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
457 set_style (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
458 update ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
459 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
460
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
461 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
462 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
463 set_style (true);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
464 update ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
465 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
466 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
467
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
468 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
469 octave_dock_widget::save_settings (void)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
470 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
471 // save state of this dock-widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
472 QString name = objectName ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
473 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
474
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
475 if (! settings)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
476 return;
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
477
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
478 settings->beginGroup ("DockWidgets");
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
479
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
480 // 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
481 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
482 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
483
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
484 if (! m_recent_dock_geom.isEmpty ())
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
485 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
486 settings->setValue (name + "_dock_area", m_recent_dock_area);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
487 settings->setValue (name, m_recent_dock_geom);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
488 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
489 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
490 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
491 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
492
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
493 settings->endGroup ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
494 settings->sync ();
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
495 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
496
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
497 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
498 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
499 if (e->type () == QEvent::NonClientAreaMouseButtonDblClick)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
500 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
501 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
502 return true;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
503 }
24014
bffd7d826887 style fixes for some GUI source files
John W. Eaton <jwe@octave.org>
parents: 23807
diff changeset
504
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
505 return QDockWidget::eventFilter (obj,e);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
506 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
507
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
508 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
509 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
510 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
511 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
512 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
513 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
514 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
515 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
516 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
517 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
518 m_recent_dock_area = m_parent->dockWidgetArea (this);
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
519 m_recent_dock_geom = saveGeometry ();
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
520 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
521 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
522
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
523 void
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
524 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
525 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
526 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
527
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
528 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
529 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
530
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
531 void
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
532 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
533 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
534 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
535
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
536 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
537 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
538
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
539 // slot for hiding the widget
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
540 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
541 octave_dock_widget::change_visibility (bool)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
542 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
543 setVisible (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
544 emit active_changed (false);
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
545 }
16798
d749c9b588e5 make stand-alone windows from dock widgets when floating (bug #38785)
Torsten <ttl@justmail.de>
parents:
diff changeset
546
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
547 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
548 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
549 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
550 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
551 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
552
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
553 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
554 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
555 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
556 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
557 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
558 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
559 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
560 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
561 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
562 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
563
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
564 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
565 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
566 // 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
567 // 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
568 // 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
569 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
570
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
571 // 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
572 // 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
573 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
574 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
575 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
576 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
577 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
578 // 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
579 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
580
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
581 // 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
582 // 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
583 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
584 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
585 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
586 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
587
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
588 void
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
589 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
590 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
591 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
592 QString css_background;
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
593 QString css_button;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
594 QString dock_icon;
18218
7952fb0435db improve title bar of dock widgets
Torsten <ttl@justmail.de>
parents: 18180
diff changeset
595
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
596 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
597
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
598 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
599 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
600
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
601 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
602 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
603 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
604 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
605 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
606 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
607 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
608 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
609 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
610 }
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
611
20794
e870a68742a6 change alignment of dock widget titles for OSX (bug #46592)
Torsten <ttl@justmail.de>
parents: 20630
diff changeset
612 #if defined (Q_OS_MAC)
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
613 QString alignment = "center";
20794
e870a68742a6 change alignment of dock widget titles for OSX (bug #46592)
Torsten <ttl@justmail.de>
parents: 20630
diff changeset
614 #else
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
615 QString alignment = "center left";
20794
e870a68742a6 change alignment of dock widget titles for OSX (bug #46592)
Torsten <ttl@justmail.de>
parents: 20630
diff changeset
616 #endif
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
617 if (m_custom_style)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
618 {
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
619
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
620 QColor bg_col, fg_col;
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
621
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
622 if (active)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
623 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
624 bg_col = m_bg_color_active;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
625 fg_col = m_fg_color_active;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
626 icon_col = m_icon_color_active;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
627 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
628 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
629 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
630 bg_col = m_bg_color;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
631 fg_col = m_fg_color;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
632 icon_col = m_icon_color;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
633 }
18218
7952fb0435db improve title bar of dock widgets
Torsten <ttl@justmail.de>
parents: 18180
diff changeset
634
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
635 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
636 if (m_title_3d > 0)
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
637 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
638 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
639 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
640 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
641 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
642 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
643 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
644 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
645 }
19913
2a992bd19169 make color gradient of custom title bar adjustable (bug #44435)
Torsten <ttl@justmail.de>
parents: 19911
diff changeset
646
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
647 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
648
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
649 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
650 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
651 " 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
652 arg (bg_col_top.name ()).
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
653 arg (bg_col.name ()).
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
654 arg (bg_col_bottom.name ());
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
655 }
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
656 else
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
657 {
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
658 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
659 css_background = QString ("");
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
660 }
18180
b3838cedfe04 redesign of dock widgets title bar with configurable colors
Torsten <ttl@justmail.de>
parents: 17929
diff changeset
661
25354
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
662 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
663 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
664 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
665 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
666 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
667 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
668 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
669 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
670 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
671 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
672 }
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
673 else
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
674 {
05a690606fd5 Use default title bar to preserve GUI float decorations (bug #53276)
Daniel J Sebald <daniel.sebald@ieee.org>
parents: 25172
diff changeset
675 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
676 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
677 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
678 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
679 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
680 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
681 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
682 }
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
683 }
19423
d93293218966 custom style of dock widget title bars depending on focus (bug #43837)
Torsten <ttl@justmail.de>
parents: 19360
diff changeset
684
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
685 // 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
686 void
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
687 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
688 {
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
689 if (m_predecessor_widget) // only != 0 if widget was tabbed
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
690 m_predecessor_widget->focus ();
19423
d93293218966 custom style of dock widget title bars depending on focus (bug #43837)
Torsten <ttl@justmail.de>
parents: 19360
diff changeset
691
24828
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
692 m_predecessor_widget = nullptr;
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
693 // 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
694 // 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
695 // 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
696 // 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
697 // 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
698 // 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
699 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
700 "DockWidgets/title_bg_color");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
701 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
702 "DockWidgets/title_bg_color_active");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
703 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
704 "DockWidgets/title_fg_color");
0f6a261ab144 move some GUI classes inside octave namespace
John W. Eaton <jwe@octave.org>
parents: 24812
diff changeset
705 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
706 "DockWidgets/title_fg_color_active");
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 }