|
 |
a9add1 |
From 0f58534c4c3825f569a01774b7f8bb1808b37886 Mon Sep 17 00:00:00 2001
|
|
 |
a9add1 |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
 |
a9add1 |
Date: Tue, 15 Dec 2015 14:24:35 +0000
|
|
 |
a9add1 |
Subject: [PATCH] gtk3+wayland: enable manual movement of toolbars
|
|
 |
a9add1 |
|
|
 |
a9add1 |
via gtk_window_begin_move_drag so add some BYDRAG/ByDrag hints
|
|
 |
a9add1 |
to select mechanism to move window by
|
|
 |
a9add1 |
|
|
 |
a9add1 |
Change-Id: Icc58653dff752a6d4ee49446647d7ede2af9dd9b
|
|
 |
a9add1 |
---
|
|
 |
a9add1 |
include/vcl/window.hxx | 3 ++-
|
|
 |
a9add1 |
vcl/inc/brdwin.hxx | 2 ++
|
|
 |
a9add1 |
vcl/inc/salframe.hxx | 1 +
|
|
 |
a9add1 |
vcl/inc/unx/gtk/gtkframe.hxx | 5 ++++-
|
|
 |
a9add1 |
vcl/source/window/brdwin.cxx | 7 ++++++-
|
|
 |
a9add1 |
vcl/source/window/window.cxx | 2 ++
|
|
 |
a9add1 |
vcl/unx/gtk3/gtk3gtkframe.cxx | 13 ++++++++++++-
|
|
 |
a9add1 |
7 files changed, 29 insertions(+), 4 deletions(-)
|
|
 |
a9add1 |
|
|
 |
a9add1 |
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
|
|
 |
a9add1 |
index ae28940..1f5c0c2 100644
|
|
 |
a9add1 |
--- a/include/vcl/window.hxx
|
|
 |
a9add1 |
+++ b/include/vcl/window.hxx
|
|
 |
a9add1 |
@@ -161,10 +161,11 @@ enum class PosSizeFlags
|
|
 |
a9add1 |
PosSize = Pos | Size,
|
|
 |
a9add1 |
All = PosSize,
|
|
 |
a9add1 |
Dropdown = 0x0010,
|
|
 |
a9add1 |
+ ByDrag = 0x0020,
|
|
 |
a9add1 |
};
|
|
 |
a9add1 |
namespace o3tl
|
|
 |
a9add1 |
{
|
|
 |
a9add1 |
- template<> struct typed_flags<PosSizeFlags> : is_typed_flags<PosSizeFlags, 0x001f> {};
|
|
 |
a9add1 |
+ template<> struct typed_flags<PosSizeFlags> : is_typed_flags<PosSizeFlags, 0x003f> {};
|
|
 |
a9add1 |
}
|
|
 |
a9add1 |
|
|
 |
a9add1 |
// Flags for Show()
|
|
 |
a9add1 |
diff --git a/vcl/inc/brdwin.hxx b/vcl/inc/brdwin.hxx
|
|
 |
a9add1 |
index d00ca1b..7e89064 100644
|
|
 |
a9add1 |
--- a/vcl/inc/brdwin.hxx
|
|
 |
a9add1 |
+++ b/vcl/inc/brdwin.hxx
|
|
 |
a9add1 |
@@ -170,6 +170,8 @@ public:
|
|
 |
a9add1 |
|
|
 |
a9add1 |
Rectangle GetMenuRect() const;
|
|
 |
a9add1 |
|
|
 |
a9add1 |
+ void MoveToByDrag(const Point& rNewPos);
|
|
 |
a9add1 |
+
|
|
 |
a9add1 |
virtual Size GetOptimalSize() const SAL_OVERRIDE;
|
|
 |
a9add1 |
};
|
|
 |
a9add1 |
|
|
 |
a9add1 |
diff --git a/vcl/inc/salframe.hxx b/vcl/inc/salframe.hxx
|
|
 |
a9add1 |
index cfd401d..9b3d52e 100644
|
|
 |
a9add1 |
--- a/vcl/inc/salframe.hxx
|
|
 |
a9add1 |
+++ b/vcl/inc/salframe.hxx
|
|
 |
a9add1 |
@@ -94,6 +94,7 @@ typedef sal_uInt64 SalExtStyle;
|
|
 |
a9add1 |
#define SAL_FRAME_POSSIZE_Y ((sal_uInt16)0x0002)
|
|
 |
a9add1 |
#define SAL_FRAME_POSSIZE_WIDTH ((sal_uInt16)0x0004)
|
|
 |
a9add1 |
#define SAL_FRAME_POSSIZE_HEIGHT ((sal_uInt16)0x0008)
|
|
 |
a9add1 |
+#define SAL_FRAME_POSSIZE_BYDRAG ((sal_uInt16)0x0010)
|
|
 |
a9add1 |
|
|
 |
a9add1 |
struct SystemParentData;
|
|
 |
a9add1 |
|
|
 |
a9add1 |
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
|
|
 |
a9add1 |
index b779d39..a55ff2c 100644
|
|
 |
a9add1 |
--- a/vcl/inc/unx/gtk/gtkframe.hxx
|
|
 |
a9add1 |
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
|
|
 |
a9add1 |
@@ -316,7 +316,10 @@ class GtkSalFrame : public SalFrame, public X11WindowProvider
|
|
 |
a9add1 |
void widget_set_size_request(long nWidth, long nHeight);
|
|
 |
a9add1 |
|
|
 |
a9add1 |
void resizeWindow( long nWidth, long nHeight );
|
|
 |
a9add1 |
- void moveWindow( long nX, long nY );
|
|
 |
a9add1 |
+ void moveWindow(long nX, long nY);
|
|
 |
a9add1 |
+#if GTK_CHECK_VERSION(3,0,0)
|
|
 |
a9add1 |
+ void dragWindowTo(long nX, long nY);
|
|
 |
a9add1 |
+#endif
|
|
 |
a9add1 |
|
|
 |
a9add1 |
Size calcDefaultSize();
|
|
 |
a9add1 |
|
|
 |
a9add1 |
diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
|
|
 |
a9add1 |
index 97dbc5b..f57ab37 100644
|
|
 |
a9add1 |
--- a/vcl/source/window/brdwin.cxx
|
|
 |
a9add1 |
+++ b/vcl/source/window/brdwin.cxx
|
|
 |
a9add1 |
@@ -1243,7 +1243,7 @@ bool ImplStdBorderWindowView::Tracking( const TrackingEvent& rTEvt )
|
|
 |
a9add1 |
aPos.Y() += aMousePos.Y();
|
|
 |
a9add1 |
if ( maFrameData.mbDragFull )
|
|
 |
a9add1 |
{
|
|
 |
a9add1 |
- pBorderWindow->SetPosPixel( aPos );
|
|
 |
a9add1 |
+ pBorderWindow->MoveToByDrag(aPos);
|
|
 |
a9add1 |
pBorderWindow->ImplUpdateAll();
|
|
 |
a9add1 |
pBorderWindow->ImplGetFrameWindow()->ImplUpdateAll();
|
|
 |
a9add1 |
}
|
|
 |
a9add1 |
@@ -2195,6 +2195,11 @@ Rectangle ImplBorderWindow::GetMenuRect() const
|
|
 |
a9add1 |
return mpBorderView->GetMenuRect();
|
|
 |
a9add1 |
}
|
|
 |
a9add1 |
|
|
 |
a9add1 |
+void ImplBorderWindow::MoveToByDrag(const Point& rNewPos)
|
|
 |
a9add1 |
+{
|
|
 |
a9add1 |
+ setPosSizePixel(rNewPos.X(), rNewPos.Y(), 0, 0, PosSizeFlags::Pos | PosSizeFlags::ByDrag);
|
|
 |
a9add1 |
+}
|
|
 |
a9add1 |
+
|
|
 |
a9add1 |
Size ImplBorderWindow::GetOptimalSize() const
|
|
 |
a9add1 |
{
|
|
 |
a9add1 |
const vcl::Window* pClientWindow = ImplGetClientWindow();
|
|
 |
a9add1 |
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
|
|
 |
a9add1 |
index 20377ac..808d683 100644
|
|
 |
a9add1 |
--- a/vcl/source/window/window.cxx
|
|
 |
a9add1 |
+++ b/vcl/source/window/window.cxx
|
|
 |
a9add1 |
@@ -2886,6 +2886,8 @@ void Window::setPosSizePixel( long nX, long nY,
|
|
 |
a9add1 |
nSysFlags |= SAL_FRAME_POSSIZE_WIDTH;
|
|
 |
a9add1 |
if( nFlags & PosSizeFlags::Height )
|
|
 |
a9add1 |
nSysFlags |= SAL_FRAME_POSSIZE_HEIGHT;
|
|
 |
a9add1 |
+ if( nFlags & PosSizeFlags::ByDrag )
|
|
 |
a9add1 |
+ nSysFlags |= SAL_FRAME_POSSIZE_BYDRAG;
|
|
 |
a9add1 |
if( nFlags & PosSizeFlags::X )
|
|
 |
a9add1 |
{
|
|
 |
a9add1 |
nSysFlags |= SAL_FRAME_POSSIZE_X;
|
|
 |
a9add1 |
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
|
|
 |
a9add1 |
index 7c24d2b..6a69c82 100644
|
|
 |
a9add1 |
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
|
|
 |
a9add1 |
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
|
|
 |
a9add1 |
@@ -878,6 +878,14 @@ void GtkSalFrame::moveWindow( long nX, long nY )
|
|
 |
a9add1 |
gtk_window_move( GTK_WINDOW(m_pWindow), nX, nY );
|
|
 |
a9add1 |
}
|
|
 |
a9add1 |
|
|
 |
a9add1 |
+void GtkSalFrame::dragWindowTo(long nX, long nY)
|
|
 |
a9add1 |
+{
|
|
 |
a9add1 |
+ if (isChild(false))
|
|
 |
a9add1 |
+ moveWindow(nX, nY);
|
|
 |
a9add1 |
+ else
|
|
 |
a9add1 |
+ gtk_window_begin_move_drag(GTK_WINDOW(m_pWindow), 1, nX, nY, GDK_CURRENT_TIME);
|
|
 |
a9add1 |
+}
|
|
 |
a9add1 |
+
|
|
 |
a9add1 |
void GtkSalFrame::widget_set_size_request(long nWidth, long nHeight)
|
|
 |
a9add1 |
{
|
|
 |
a9add1 |
gtk_widget_set_size_request(GTK_WIDGET(m_pFixedContainer), nWidth, nHeight );
|
|
 |
a9add1 |
@@ -1717,7 +1725,10 @@ void GtkSalFrame::SetPosSize( long nX, long nY, long nWidth, long nHeight, sal_u
|
|
 |
a9add1 |
|
|
 |
a9add1 |
m_bDefaultPos = false;
|
|
 |
a9add1 |
|
|
 |
a9add1 |
- moveWindow(nX, nY);
|
|
 |
a9add1 |
+ if (nFlags & SAL_FRAME_POSSIZE_BYDRAG)
|
|
 |
a9add1 |
+ dragWindowTo(nX, nY);
|
|
 |
a9add1 |
+ else
|
|
 |
a9add1 |
+ moveWindow(nX, nY);
|
|
 |
a9add1 |
|
|
 |
a9add1 |
updateScreenNumber();
|
|
 |
a9add1 |
}
|
|
 |
a9add1 |
--
|
|
 |
a9add1 |
2.5.0
|
|
 |
a9add1 |
|