[Libreoffice-commits] core.git: 2 commits - vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Mon Jun 21 19:27:34 UTC 2021
vcl/unx/gtk3/gtkinst.cxx | 64 +++++++++++++++++++++++++++++++++++++++++------
1 file changed, 57 insertions(+), 7 deletions(-)
New commits:
commit 949658028e722e5d2657b503eb20e16e41dbd8cf
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Jun 21 17:04:54 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Jun 21 21:27:03 2021 +0200
gtk4: some initial dnd effort
Change-Id: I964afbf30c75b6d8e0c31ce7fcb536814acf05b8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117599
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 3b8e9dbce02c..40e23ae7d7ac 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -2677,15 +2677,23 @@ protected:
void ensure_drag_begin_end()
{
-#if !GTK_CHECK_VERSION(4, 0, 0)
if (!m_nDragBeginSignalId)
{
// using "after" due to https://gitlab.gnome.org/GNOME/pygobject/issues/251
+#if GTK_CHECK_VERSION(4, 0, 0)
+ m_nDragBeginSignalId = g_signal_connect_after(get_drag_controller(), "drag-begin", G_CALLBACK(signalDragBegin), this);
+#else
m_nDragBeginSignalId = g_signal_connect_after(m_pWidget, "drag-begin", G_CALLBACK(signalDragBegin), this);
+#endif
}
if (!m_nDragEndSignalId)
+ {
+#if GTK_CHECK_VERSION(4, 0, 0)
+ m_nDragEndSignalId = g_signal_connect(get_drag_controller(), "drag-end", G_CALLBACK(signalDragEnd), this);
+#else
m_nDragEndSignalId = g_signal_connect(m_pWidget, "drag-end", G_CALLBACK(signalDragEnd), this);
#endif
+ }
}
private:
@@ -2736,6 +2744,7 @@ private:
GtkEventController* m_pFocusController;
GtkEventController* m_pClickController;
GtkEventController* m_pMotionController;
+ GtkEventController* m_pDragController;
#endif
rtl::Reference<GtkInstDropTarget> m_xDropTarget;
@@ -3053,11 +3062,13 @@ private:
GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
pThis->m_xDropTarget->signalDragDropReceived(pWidget, context, x, y, data, ttype, time);
}
+#endif
virtual void drag_ended()
{
}
+#if !GTK_CHECK_VERSION(4, 0, 0)
static void signalDragLeave(GtkWidget *pWidget, GdkDragContext *context, guint time, gpointer widget)
{
GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
@@ -3068,13 +3079,17 @@ private:
pThis->drag_ended();
}
}
+#endif
+#if GTK_CHECK_VERSION(4, 0, 0)
+ static void signalDragBegin(GtkDragSource* context, GdkDrag*, gpointer widget)
+#else
static void signalDragBegin(GtkWidget*, GdkDragContext* context, gpointer widget)
+#endif
{
GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
pThis->signal_drag_begin(context);
}
-#endif
void ensure_drag_source()
{
@@ -3098,8 +3113,11 @@ private:
return false;
}
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+ void signal_drag_begin(GtkDragSource* context)
+#else
void signal_drag_begin(GdkDragContext* context)
+#endif
{
bool bUnsetDragIcon(false);
if (do_signal_drag_begin(bUnsetDragIcon))
@@ -3122,21 +3140,26 @@ private:
return;
m_xDragSource->setActiveDragSource();
}
-#endif
virtual void do_signal_drag_end()
{
}
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+ static void signalDragEnd(GtkGestureDrag* /*gesture*/, double /*offset_x*/, double /*offset_y*/, gpointer widget)
+#else
static void signalDragEnd(GtkWidget* /*widget*/, GdkDragContext* context, gpointer widget)
+#endif
{
GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
pThis->do_signal_drag_end();
+#if !GTK_CHECK_VERSION(4, 0, 0)
if (pThis->m_xDragSource.is())
pThis->m_xDragSource->dragEnd(context);
+#endif
}
+#if !GTK_CHECK_VERSION(4, 0, 0)
static gboolean signalDragFailed(GtkWidget* /*widget*/, GdkDragContext* /*context*/, GtkDragResult /*result*/, gpointer widget)
{
GtkInstanceWidget* pThis = static_cast<GtkInstanceWidget*>(widget);
@@ -3239,6 +3262,7 @@ public:
, m_pFocusController(nullptr)
, m_pClickController(nullptr)
, m_pMotionController(nullptr)
+ , m_pDragController(nullptr)
#endif
{
if (!bTakeOwnership)
@@ -3769,6 +3793,18 @@ public:
}
return m_pMotionController;
}
+
+ GtkEventController* get_drag_controller()
+ {
+ if (!m_pDragController)
+ {
+ GtkDragSource* pDrag = gtk_drag_source_new();
+ m_pDragController = GTK_EVENT_CONTROLLER(pDrag);
+ gtk_widget_add_controller(m_pWidget, m_pDragController);
+ }
+ return m_pDragController;
+ }
+
#endif
@@ -3980,9 +4016,21 @@ public:
if (m_nDragLeaveSignalId)
g_signal_handler_disconnect(m_pWidget, m_nDragLeaveSignalId);
if (m_nDragEndSignalId)
+ {
+#if GTK_CHECK_VERSION(4, 0, 0)
+ g_signal_handler_disconnect(get_drag_controller(), m_nDragEndSignalId);
+#else
g_signal_handler_disconnect(m_pWidget, m_nDragEndSignalId);
+#endif
+ }
if (m_nDragBeginSignalId)
+ {
+#if GTK_CHECK_VERSION(4, 0, 0)
+ g_signal_handler_disconnect(get_drag_controller(), m_nDragBeginSignalId);
+#else
g_signal_handler_disconnect(m_pWidget, m_nDragBeginSignalId);
+#endif
+ }
if (m_nDragFailedSignalId)
g_signal_handler_disconnect(m_pWidget, m_nDragFailedSignalId);
if (m_nDragDataDeleteignalId)
@@ -14971,7 +15019,6 @@ public:
}
}
-#if !GTK_CHECK_VERSION(4, 0, 0)
virtual void drag_ended() override
{
m_bInDrag = false;
@@ -14989,7 +15036,6 @@ public:
// unhighlight the row
gtk_tree_view_set_drag_dest_row(m_pTreeView, nullptr, GTK_TREE_VIEW_DROP_BEFORE);
}
-#endif
virtual int vadjustment_get_value() const override
{
commit fde49b6c80b1f16b626554ec39da79e7bc186c87
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon Jun 21 16:25:56 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon Jun 21 21:26:41 2021 +0200
gtk4: reenable some more working dialogs
Change-Id: I373b9260287b229f4f3092b4c27199c2a55ea23d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117597
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx
index 059a51ee93df..3b8e9dbce02c 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -22324,6 +22324,7 @@ weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString&
rUIFile != "cui/ui/macroselectordialog.ui" &&
rUIFile != "cui/ui/menuassignpage.ui" &&
rUIFile != "cui/ui/namedialog.ui" &&
+ rUIFile != "cui/ui/newlibdialog.ui" &&
rUIFile != "cui/ui/numberingformatpage.ui" &&
rUIFile != "cui/ui/numberingoptionspage.ui" &&
rUIFile != "cui/ui/numberingpositionpage.ui" &&
@@ -22489,6 +22490,7 @@ weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString&
rUIFile != "modules/swriter/ui/columndialog.ui" &&
rUIFile != "modules/swriter/ui/columnpage.ui" &&
rUIFile != "modules/swriter/ui/columnwidth.ui" &&
+ rUIFile != "modules/swriter/ui/comboboxfragment.ui" &&
rUIFile != "modules/swriter/ui/converttexttable.ui" &&
rUIFile != "modules/swriter/ui/dropcapspage.ui" &&
rUIFile != "modules/swriter/ui/editcategories.ui" &&
@@ -22543,7 +22545,9 @@ weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString&
rUIFile != "modules/swriter/ui/tablecolumnpage.ui" &&
rUIFile != "modules/swriter/ui/tableproperties.ui" &&
rUIFile != "modules/swriter/ui/tabletextflowpage.ui" &&
+ rUIFile != "modules/swriter/ui/templatedialog2.ui" &&
rUIFile != "modules/swriter/ui/templatedialog8.ui" &&
+ rUIFile != "modules/swriter/ui/templatedialog16.ui" &&
rUIFile != "modules/swriter/ui/textgridpage.ui" &&
rUIFile != "modules/swriter/ui/titlepage.ui" &&
rUIFile != "modules/swriter/ui/watermarkdialog.ui" &&
More information about the Libreoffice-commits
mailing list