[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Wed Jun 16 19:44:57 UTC 2021
vcl/unx/gtk3/gtkinst.cxx | 60 +++++++++++++++++++++++++++++------------------
1 file changed, 38 insertions(+), 22 deletions(-)
New commits:
commit f81c1414c0e30713b5fea544cae5f50a330b99e3
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Wed Jun 16 14:45:51 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Wed Jun 16 21:44:05 2021 +0200
gtk4: partial restoration of double-decker notebooks
there isn't an obvious candidate as to when to do the split though
Change-Id: Iee6d74015263b180470fc0c90924617bcde14421
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117334
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 8253392cf306..3236d3bd9600 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -4998,6 +4998,32 @@ IMPL_LINK_NOARG(ChildFrame, ImplHandleLayoutTimerHdl, Timer*, void)
Layout();
}
+void container_remove(GtkWidget* pContainer, GtkWidget* pChild)
+{
+#if !GTK_CHECK_VERSION(4, 0, 0)
+ gtk_container_remove(GTK_CONTAINER(pContainer), pChild);
+#else
+ assert(GTK_IS_BOX(pContainer) || GTK_IS_GRID(pContainer));
+ if (GTK_IS_BOX(pContainer))
+ gtk_box_remove(GTK_BOX(pContainer), pChild);
+ else if (GTK_IS_GRID(pContainer))
+ gtk_grid_remove(GTK_GRID(pContainer), pChild);
+#endif
+}
+
+void container_add(GtkWidget* pContainer, GtkWidget* pChild)
+{
+#if !GTK_CHECK_VERSION(4, 0, 0)
+ gtk_container_add(GTK_CONTAINER(pContainer), pChild);
+#else
+ assert(GTK_IS_BOX(pContainer) || GTK_IS_GRID(pContainer));
+ if (GTK_IS_BOX(pContainer))
+ gtk_box_append(GTK_BOX(pContainer), pChild);
+ else if (GTK_IS_GRID(pContainer))
+ gtk_grid_attach(GTK_GRID(pContainer), pChild, 0, 0, 1, 1);
+#endif
+}
+
class GtkInstanceContainer : public GtkInstanceWidget, public virtual weld::Container
{
private:
@@ -5095,30 +5121,14 @@ public:
GtkWidget* pChild = pGtkWidget->getWidget();
g_object_ref(pChild);
auto pOldContainer = getContainer();
-#if !GTK_CHECK_VERSION(4, 0, 0)
- gtk_container_remove(pOldContainer, pChild);
-#else
- assert(GTK_IS_BOX(pOldContainer) || GTK_IS_GRID(pOldContainer));
- if (GTK_IS_BOX(pOldContainer))
- gtk_box_remove(GTK_BOX(pOldContainer), pChild);
- else if (GTK_IS_GRID(pOldContainer))
- gtk_grid_remove(GTK_GRID(pOldContainer), pChild);
-#endif
+ container_remove(GTK_WIDGET(pOldContainer), pChild);
GtkInstanceContainer* pNewGtkParent = dynamic_cast<GtkInstanceContainer*>(pNewParent);
assert(!pNewParent || pNewGtkParent);
if (pNewGtkParent)
{
auto pNewContainer = pNewGtkParent->getContainer();
-#if !GTK_CHECK_VERSION(4, 0, 0)
- gtk_container_add(pNewContainer, pChild);
-#else
- assert(GTK_IS_BOX(pNewContainer) || GTK_IS_GRID(pNewContainer));
- if (GTK_IS_BOX(pNewContainer))
- gtk_box_append(GTK_BOX(pNewContainer), pChild);
- else if (GTK_IS_GRID(pNewContainer))
- gtk_grid_attach(GTK_GRID(pNewContainer), pChild, 0, 0, 1, 1);
-#endif
+ container_add(GTK_WIDGET(pNewContainer), pChild);
}
g_object_unref(pChild);
}
@@ -7995,18 +8005,24 @@ private:
void make_overflow_boxes()
{
-#if !GTK_CHECK_VERSION(4, 0, 0)
m_pOverFlowBox = GTK_BOX(gtk_box_new(GTK_ORIENTATION_VERTICAL, 0));
GtkWidget* pParent = gtk_widget_get_parent(GTK_WIDGET(m_pNotebook));
- gtk_container_add(GTK_CONTAINER(pParent), GTK_WIDGET(m_pOverFlowBox));
+ container_add(pParent, GTK_WIDGET(m_pOverFlowBox));
+#if GTK_CHECK_VERSION(4, 0, 0)
+ gtk_box_append(m_pOverFlowBox, GTK_WIDGET(m_pOverFlowNotebook));
+#else
gtk_box_pack_start(m_pOverFlowBox, GTK_WIDGET(m_pOverFlowNotebook), false, false, 0);
+#endif
g_object_ref(m_pNotebook);
- gtk_container_remove(GTK_CONTAINER(pParent), GTK_WIDGET(m_pNotebook));
+ container_remove(pParent, GTK_WIDGET(m_pNotebook));
+#if GTK_CHECK_VERSION(4, 0, 0)
+ gtk_box_append(m_pOverFlowBox, GTK_WIDGET(m_pNotebook));
+#else
gtk_box_pack_start(m_pOverFlowBox, GTK_WIDGET(m_pNotebook), true, true, 0);
+#endif
// coverity[freed_arg : FALSE] - this does not free m_pNotebook , it is reffed by pParent
g_object_unref(m_pNotebook);
gtk_widget_show(GTK_WIDGET(m_pOverFlowBox));
-#endif
}
void split_notebooks()
More information about the Libreoffice-commits
mailing list