#include "gtl_gui_dock.h" namespace gtl { namespace gui { dock::dock(QWidget* parent) : QDockWidget(parent) { _title = new dock_title(this); setTitleBarWidget(_title); connect(_title, &dock_title::close, this, &QDockWidget::close); connect(_title, &dock_title::pin, this, &dock::pin); connect(_title, &dock_title::maximize, this, &dock::maximize); connect(this, &QDockWidget::topLevelChanged, this, &dock::floating_changed); } void dock::set_title(QString title) { _title->set_text(title); } void dock::pin(bool value) { setFloating(!value); setAllowedAreas(value ? Qt::LeftDockWidgetArea : Qt::NoDockWidgetArea); // if (value) // set_is_maximized(false); _title->set_pin_status(!value); } void dock::floating_changed(bool value) { setAllowedAreas(value ? Qt::LeftDockWidgetArea : Qt::NoDockWidgetArea); _title->set_pin_status(value); } void dock::maximize(bool value) { if (value) { _state = saveGeometry(); _is_floating = isFloating(); setFloating(true); setAllowedAreas(Qt::NoDockWidgetArea); showMaximized(); } else { restoreGeometry(_state); setFloating(_is_floating); setAllowedAreas(!_is_floating ? Qt::LeftDockWidgetArea : Qt::NoDockWidgetArea); } } } }