[Libreoffice-commits] core.git: vcl/unx
Caolán McNamara (via logerrit)
logerrit at kemper.freedesktop.org
Mon May 24 19:40:29 UTC 2021
vcl/unx/gtk3/gtkinst.cxx | 80 +++++++++++++++++++++++++++++++++++++----------
1 file changed, 64 insertions(+), 16 deletions(-)
New commits:
commit 08e99279226206db8ce83cdebc4cf2994739e90b
Author: Caolán McNamara <caolanm at redhat.com>
AuthorDate: Mon May 24 17:07:08 2021 +0100
Commit: Caolán McNamara <caolanm at redhat.com>
CommitDate: Mon May 24 21:39:43 2021 +0200
gtk4: restore collapse/undo_collapse for calc cell reference dialogs
hide the entire titlebar for now, maybe we should just hide the
action widgets and keep the titlebar.
Change-Id: I81667ac0d5edbf4f5c7e12909672fa0de84c059a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116071
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 8c6386dd693a..9ab2d5f40a6d 100644
--- a/vcl/unx/gtk3/gtkinst.cxx
+++ b/vcl/unx/gtk3/gtkinst.cxx
@@ -4766,7 +4766,9 @@ public:
virtual void resize_to_request() override
{
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+ gtk_window_set_default_size(m_pWindow, 1, 1);
+#else
gtk_window_resize(m_pWindow, 1, 1);
#endif
}
@@ -5144,11 +5146,42 @@ typedef std::set<GtkWidget*> winset;
namespace
{
-#if !GTK_CHECK_VERSION(4, 0, 0)
- void hideUnless(GtkContainer *pTop, const winset& rVisibleWidgets,
+#if GTK_CHECK_VERSION(4, 0, 0)
+ void collectVisibleChildren(GtkWidget* pTop, winset& rVisibleWidgets)
+ {
+ for (GtkWidget* pChild = gtk_widget_get_first_child(pTop);
+ pChild; pChild = gtk_widget_get_next_sibling(pChild))
+ {
+ if (!gtk_widget_get_visible(pChild))
+ continue;
+ rVisibleWidgets.insert(pChild);
+ collectVisibleChildren(pChild, rVisibleWidgets);
+ }
+ }
+#endif
+
+ void hideUnless(GtkWidget* pTop, const winset& rVisibleWidgets,
std::vector<GtkWidget*> &rWasVisibleWidgets)
{
- GList* pChildren = gtk_container_get_children(pTop);
+#if GTK_CHECK_VERSION(4, 0, 0)
+ for (GtkWidget* pChild = gtk_widget_get_first_child(pTop);
+ pChild; pChild = gtk_widget_get_next_sibling(pChild))
+ {
+ if (!gtk_widget_get_visible(pChild))
+ continue;
+ if (rVisibleWidgets.find(pChild) == rVisibleWidgets.end())
+ {
+ g_object_ref(pChild);
+ rWasVisibleWidgets.emplace_back(pChild);
+ gtk_widget_hide(pChild);
+ }
+ else
+ {
+ hideUnless(pChild, rVisibleWidgets, rWasVisibleWidgets);
+ }
+ }
+#else
+ GList* pChildren = gtk_container_get_children(GTK_CONTAINER(pTop));
for (GList* pEntry = g_list_first(pChildren); pEntry; pEntry = g_list_next(pEntry))
{
GtkWidget* pChild = static_cast<GtkWidget*>(pEntry->data);
@@ -5162,12 +5195,12 @@ namespace
}
else if (GTK_IS_CONTAINER(pChild))
{
- hideUnless(GTK_CONTAINER(pChild), rVisibleWidgets, rWasVisibleWidgets);
+ hideUnless(pChild, rVisibleWidgets, rWasVisibleWidgets);
}
}
g_list_free(pChildren);
- }
#endif
+ }
class GtkInstanceButton;
@@ -5526,25 +5559,36 @@ public:
{
aVisibleWidgets.insert(pCandidate);
}
- //same again with pRefBtn, except stop if there's a
- //shared parent in the existing widgets
- for (GtkWidget *pCandidate = pRefBtn;
- pCandidate && pCandidate != pContentArea && gtk_widget_get_visible(pCandidate);
- pCandidate = gtk_widget_get_parent(pCandidate))
+#if GTK_CHECK_VERSION(4, 0, 0)
+ collectVisibleChildren(pRefEdit, aVisibleWidgets);
+#endif
+ if (pRefBtn)
{
- if (aVisibleWidgets.insert(pCandidate).second)
- break;
+#if GTK_CHECK_VERSION(4, 0, 0)
+ collectVisibleChildren(pRefBtn, aVisibleWidgets);
+#endif
+ //same again with pRefBtn, except stop if there's a
+ //shared parent in the existing widgets
+ for (GtkWidget *pCandidate = pRefBtn;
+ pCandidate && pCandidate != pContentArea && gtk_widget_get_visible(pCandidate);
+ pCandidate = gtk_widget_get_parent(pCandidate))
+ {
+ if (aVisibleWidgets.insert(pCandidate).second)
+ break;
+ }
}
-#if !GTK_CHECK_VERSION(4, 0, 0)
//hide everything except the aVisibleWidgets
- hideUnless(GTK_CONTAINER(pContentArea), aVisibleWidgets, m_aHiddenWidgets);
-
+ hideUnless(pContentArea, aVisibleWidgets, m_aHiddenWidgets);
gtk_widget_set_size_request(pRefEdit, m_nOldEditWidth, -1);
+#if !GTK_CHECK_VERSION(4, 0, 0)
m_nOldBorderWidth = gtk_container_get_border_width(GTK_CONTAINER(m_pDialog));
gtk_container_set_border_width(GTK_CONTAINER(m_pDialog), 0);
if (GtkWidget* pActionArea = gtk_dialog_get_action_area(GTK_DIALOG(m_pDialog)))
gtk_widget_hide(pActionArea);
+#else
+ if (GtkWidget* pActionArea = gtk_dialog_get_header_bar(GTK_DIALOG(m_pDialog)))
+ gtk_widget_hide(pActionArea);
#endif
// calc's insert->function is springing back to its original size if the ref-button
@@ -5582,6 +5626,9 @@ public:
gtk_container_set_border_width(GTK_CONTAINER(m_pDialog), m_nOldBorderWidth);
if (GtkWidget* pActionArea = gtk_dialog_get_action_area(GTK_DIALOG(m_pDialog)))
gtk_widget_show(pActionArea);
+#else
+ if (GtkWidget* pActionArea = gtk_dialog_get_header_bar(GTK_DIALOG(m_pDialog)))
+ gtk_widget_show(pActionArea);
#endif
resize_to_request();
present();
@@ -19666,6 +19713,7 @@ weld::Builder* GtkInstance::CreateBuilder(weld::Widget* pParent, const OUString&
rUIFile != "svx/ui/fontworkgallerydialog.ui" &&
rUIFile != "modules/scalc/ui/deletecells.ui" &&
rUIFile != "modules/scalc/ui/deletecontents.ui" &&
+ rUIFile != "modules/scalc/ui/goalseekdlg.ui" &&
rUIFile != "modules/scalc/ui/inputstringdialog.ui" &&
rUIFile != "modules/scalc/ui/insertcells.ui" &&
rUIFile != "modules/scalc/ui/optimalcolwidthdialog.ui" &&
More information about the Libreoffice-commits
mailing list