Skip to content

Commit 6ca7e79

Browse files
authored
Add maximize button to Image and Camera display (#1803)
1 parent 02ea03e commit 6ca7e79

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

src/rviz/default_plugin/camera_display.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
#include <rviz/properties/float_property.h>
5252
#include <rviz/properties/int_property.h>
5353
#include <rviz/properties/ros_topic_property.h>
54+
#include <rviz/panel_dock_widget.h>
5455
#include <rviz/render_panel.h>
5556
#include <rviz/uniform_string_stream.h>
5657
#include <rviz/validate_floats.h>
@@ -192,6 +193,7 @@ void CameraDisplay::onInitialize()
192193
render_panel_->initialize(context_->getSceneManager(), context_);
193194

194195
setAssociatedWidget(render_panel_);
196+
getAssociatedWidgetPanel()->addMaximizeButton();
195197

196198
render_panel_->setAutoRender(false);
197199
render_panel_->setOverlaysEnabled(false);

src/rviz/default_plugin/image_display.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444

4545
#include <rviz/display_context.h>
4646
#include <rviz/frame_manager.h>
47+
#include <rviz/panel_dock_widget.h>
4748
#include <rviz/ogre_helpers/compatibility.h>
4849
#include <rviz/render_panel.h>
4950
#include <rviz/validate_floats.h>
@@ -130,6 +131,7 @@ void ImageDisplay::onInitialize()
130131
render_panel_->initialize(img_scene_manager_, context_);
131132

132133
setAssociatedWidget(render_panel_);
134+
getAssociatedWidgetPanel()->addMaximizeButton();
133135

134136
render_panel_->setAutoRender(false);
135137
render_panel_->setOverlaysEnabled(false);

src/rviz/panel_dock_widget.cpp

+24
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,30 @@ void PanelDockWidget::setContentWidget(QWidget* child)
124124
}
125125
}
126126

127+
void PanelDockWidget::addMaximizeButton()
128+
{
129+
QToolButton* button = new QToolButton();
130+
button->setIcon(QIcon::fromTheme("view-fullscreen"));
131+
button->setIconSize(QSize(10, 10));
132+
button->setToolTip("Toggle maximize");
133+
connect(button, &QToolButton::clicked, this, &PanelDockWidget::toggleMaximized);
134+
dynamic_cast<QHBoxLayout*>(titleBarWidget()->layout())->insertWidget(2, button);
135+
}
136+
137+
void PanelDockWidget::toggleMaximized()
138+
{
139+
if (windowState() & Qt::WindowMaximized)
140+
{
141+
setFloating(false);
142+
showNormal();
143+
}
144+
else
145+
{
146+
setFloating(true);
147+
showMaximized();
148+
}
149+
}
150+
127151
void PanelDockWidget::closeEvent(QCloseEvent* /*event*/)
128152
{
129153
Q_EMIT closed();

src/rviz/panel_dock_widget.h

+2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ class RVIZ_EXPORT PanelDockWidget : public QDockWidget
5454
void setCollapsed(bool collapsed);
5555

5656
void setIcon(const QIcon& icon);
57+
void addMaximizeButton();
5758

5859
virtual void save(Config config);
5960
virtual void load(const Config& config);
@@ -67,6 +68,7 @@ class RVIZ_EXPORT PanelDockWidget : public QDockWidget
6768
public Q_SLOTS:
6869

6970
void setWindowTitle(const QString& title);
71+
void toggleMaximized();
7072

7173
/** @ Override the visibility of the widget. **/
7274
virtual void overrideVisibility(bool hide);

0 commit comments

Comments
 (0)