[libadwaita/wip/exalm/about] about-window: Stop using expressions
- From: Alexander Mikhaylenko <alexm src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libadwaita/wip/exalm/about] about-window: Stop using expressions
- Date: Thu, 28 Jul 2022 15:56:34 +0000 (UTC)
commit aae15a84286568cc5991c0546dcd4b9dad52f595
Author: Alexander Mikhaylenko <alexm gnome org>
Date: Thu Jul 28 19:53:57 2022 +0400
about-window: Stop using expressions
Sad, but it's not worse than crashing.
Fixes https://gitlab.gnome.org/GNOME/libadwaita/-/issues/523
src/adw-about-window.c | 170 +++++++++++++++++++++++++++++++++++-------------
src/adw-about-window.ui | 160 ++++++++++-----------------------------------
2 files changed, 157 insertions(+), 173 deletions(-)
---
diff --git a/src/adw-about-window.c b/src/adw-about-window.c
index f5cc95ab..cb83fc28 100644
--- a/src/adw-about-window.c
+++ b/src/adw-about-window.c
@@ -240,14 +240,33 @@ struct _AdwAboutWindow {
GtkWidget *leaflet;
GtkWidget *subpage_stack;
GtkWidget *toast_overlay;
+ GtkWidget *main_scrolled_window;
+ GtkWidget *headerbar_stack;
+
+ GtkWidget *app_icon_image;
+ GtkWidget *app_name_label;
+ GtkWidget *developer_name_label;
+ GtkWidget *version_button;
+
+ GtkWidget *details_group;
+ GtkWidget *whats_new_row;
+ GtkWidget *comments_label;
GtkWidget *website_row;
GtkWidget *links_group;
GtkWidget *details_website_row;
+ GtkWidget *details_row;
+ GtkTextBuffer *release_notes_buffer;
+
+ GtkWidget *support_group;
+ GtkWidget *support_row;
+ GtkWidget *issue_row;
+ GtkWidget *troubleshooting_row;
+ GtkWidget *debug_info_page;
+
+ GtkWidget *credits_legal_group;
GtkWidget *credits_box;
GtkWidget *legal_box;
GtkWidget *acknowledgements_box;
- GtkWidget *debug_info_page;
- GtkTextBuffer *release_notes_buffer;
char *application_icon;
char *application_name;
@@ -326,39 +345,18 @@ free_legal_section (LegalSection *section)
g_free (section);
}
-static gboolean
-boolean_or (AdwAboutWindow *self,
- int number,
- ...)
+static void
+update_headerbar_cb (AdwAboutWindow *self)
{
- va_list args;
-
- va_start (args, number);
-
- for (gsize i = 0; i < number; i++)
- if (va_arg (args, gboolean)) {
- va_end (args);
-
- return TRUE;
- }
-
- va_end (args);
+ GtkAdjustment *adj;
+ double value;
+ const char *name;
- return FALSE;
-}
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scrolled_window));
+ value = gtk_adjustment_get_value (adj);
+ name = g_strdup (value > 0 ? "regular" : "top");
-static gboolean
-string_is_not_empty (AdwAboutWindow *self,
- const char *string)
-{
- return string && string[0];
-}
-
-static char *
-get_headerbar_name (AdwAboutWindow *self,
- double value)
-{
- return g_strdup (value > 0 ? "regular" : "top");
+ gtk_stack_set_visible_child_name (GTK_STACK (self->headerbar_stack), name);
}
static inline void
@@ -388,6 +386,15 @@ activate_link_default_cb (AdwAboutWindow *self,
return GDK_EVENT_STOP;
}
+static void
+update_credits_legal_group (AdwAboutWindow *self)
+{
+ gtk_widget_set_visible (self->credits_legal_group,
+ gtk_widget_get_visible (self->credits_box) ||
+ gtk_widget_get_visible (self->legal_box) ||
+ gtk_widget_get_visible (self->acknowledgements_box));
+}
+
/* Adapted from text_buffer_new() in gtkaboutdialog.c */
static void
parse_person (char *person,
@@ -532,6 +539,8 @@ update_credits (AdwAboutWindow *self)
gtk_widget_set_visible (self->credits_box,
!!gtk_widget_get_first_child (self->credits_box));
+
+ update_credits_legal_group (self);
}
static char *
@@ -639,6 +648,8 @@ update_legal (AdwAboutWindow *self)
gtk_widget_set_visible (self->legal_box,
!!gtk_widget_get_first_child (self->legal_box));
+
+ update_credits_legal_group (self);
}
typedef enum {
@@ -910,8 +921,11 @@ update_release_notes (AdwAboutWindow *self)
gtk_text_buffer_set_text (self->release_notes_buffer, "", -1);
- if (!self->release_notes || !*self->release_notes)
+ if (!self->release_notes || !*self->release_notes) {
+ gtk_widget_hide (self->whats_new_row);
+
return;
+ }
pdata.buffer = self->release_notes_buffer;
gtk_text_buffer_get_start_iter (self->release_notes_buffer, &pdata.iter);
@@ -961,6 +975,8 @@ update_release_notes (AdwAboutWindow *self)
g_error_free (error);
g_free (position);
+ gtk_widget_show (self->whats_new_row);
+
return;
}
@@ -970,20 +986,41 @@ update_release_notes (AdwAboutWindow *self)
gtk_text_buffer_delete (self->release_notes_buffer, &pdata.iter, &end_iter);
g_markup_parse_context_free (context);
+
+ gtk_widget_show (self->whats_new_row);
}
static void
-update_links (AdwAboutWindow *self)
+update_details (AdwAboutWindow *self)
{
gboolean has_website = self->website && *self->website;
gboolean has_comments = self->comments && *self->comments;
+ gboolean has_release_notes = gtk_widget_get_visible (self->whats_new_row);
gboolean show_details = has_comments || self->has_custom_links;
+ gboolean show_links = (has_website && has_comments) || self->has_custom_links;
+ gtk_widget_set_visible (self->comments_label, has_comments);
gtk_widget_set_visible (self->website_row, has_website && !show_details);
-
gtk_widget_set_visible (self->details_website_row, has_website && show_details);
- gtk_widget_set_visible (self->links_group,
- (has_website && has_comments) || self->has_custom_links);
+ gtk_widget_set_visible (self->links_group, show_links);
+ gtk_widget_set_visible (self->details_row, has_comments || show_links);
+ gtk_widget_set_visible (self->details_group,
+ has_website || has_comments ||
+ show_links || has_release_notes);
+}
+
+static void
+update_support (AdwAboutWindow *self)
+{
+ gboolean has_support_url = self->support_url && *self->support_url;
+ gboolean has_issue_url = self->issue_url && *self->issue_url;
+ gboolean has_debug_info = self->debug_info && *self->debug_info;
+
+ gtk_widget_set_visible (self->support_row, has_support_url);
+ gtk_widget_set_visible (self->issue_row, has_issue_url);
+ gtk_widget_set_visible (self->troubleshooting_row, has_debug_info);
+ gtk_widget_set_visible (self->support_group,
+ has_support_url || has_issue_url || has_debug_info);
}
static void
@@ -1809,18 +1846,34 @@ adw_about_window_class_init (AdwAboutWindowClass *klass)
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, leaflet);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, subpage_stack);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, toast_overlay);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, main_scrolled_window);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, headerbar_stack);
+
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, app_icon_image);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, app_name_label);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, developer_name_label);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, version_button);
+
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, details_group);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, whats_new_row);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, comments_label);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, website_row);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, links_group);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, details_website_row);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, details_row);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, release_notes_buffer);
+
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, support_group);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, support_row);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, issue_row);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, troubleshooting_row);
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, debug_info_page);
+
+ gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, credits_legal_group);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, credits_box);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, legal_box);
gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, acknowledgements_box);
- gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, debug_info_page);
- gtk_widget_class_bind_template_child (widget_class, AdwAboutWindow, release_notes_buffer);
- gtk_widget_class_bind_template_callback (widget_class, boolean_or);
- gtk_widget_class_bind_template_callback (widget_class, string_is_not_empty);
- gtk_widget_class_bind_template_callback (widget_class, get_headerbar_name);
gtk_widget_class_bind_template_callback (widget_class, activate_link_cb);
gtk_widget_class_install_action (widget_class, "about.back", NULL,
@@ -1846,6 +1899,7 @@ adw_about_window_class_init (AdwAboutWindowClass *klass)
static void
adw_about_window_init (AdwAboutWindow *self)
{
+ GtkAdjustment *adj;
self->application_icon = g_strdup ("");
self->application_name = g_strdup ("");
self->developer_name = g_strdup ("");
@@ -1880,6 +1934,10 @@ adw_about_window_init (AdwAboutWindow *self)
gtk_text_buffer_create_tag (self->release_notes_buffer, "heading",
"weight", PANGO_WEIGHT_BOLD,
NULL);
+
+ adj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->main_scrolled_window));
+
+ g_signal_connect_swapped (adj, "value-changed", G_CALLBACK (update_headerbar_cb), self);
}
/**
@@ -1939,6 +1997,9 @@ adw_about_window_set_application_icon (AdwAboutWindow *self,
g_free (self->application_icon);
self->application_icon = g_strdup (application_icon);
+ gtk_widget_set_visible (self->app_icon_image,
+ application_icon && *application_icon);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPLICATION_ICON]);
}
@@ -1984,6 +2045,9 @@ adw_about_window_set_application_name (AdwAboutWindow *self,
g_free (self->application_name);
self->application_name = g_strdup (application_name);
+ gtk_widget_set_visible (self->app_name_label,
+ application_name && *application_name);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_APPLICATION_NAME]);
}
@@ -2034,6 +2098,9 @@ adw_about_window_set_developer_name (AdwAboutWindow *self,
g_free (self->developer_name);
self->developer_name = g_strdup (developer_name);
+ gtk_widget_set_visible (self->developer_name_label,
+ developer_name && *developer_name);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEVELOPER_NAME]);
}
@@ -2082,6 +2149,8 @@ adw_about_window_set_version (AdwAboutWindow *self,
g_free (self->version);
self->version = g_strdup (version);
+ gtk_widget_set_visible (self->version_button, version && *version);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_VERSION]);
}
@@ -2137,6 +2206,7 @@ adw_about_window_set_release_notes_version (AdwAboutWindow *self,
self->release_notes_version = g_strdup (version);
update_release_notes (self);
+ update_details (self);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RELEASE_NOTES_VERSION]);
}
@@ -2205,6 +2275,7 @@ adw_about_window_set_release_notes (AdwAboutWindow *self,
self->release_notes = g_strdup (release_notes);
update_release_notes (self);
+ update_details (self);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_RELEASE_NOTES]);
}
@@ -2254,7 +2325,7 @@ adw_about_window_set_comments (AdwAboutWindow *self,
g_free (self->comments);
self->comments = g_strdup (comments);
- update_links (self);
+ update_details (self);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_COMMENTS]);
}
@@ -2304,7 +2375,7 @@ adw_about_window_set_website (AdwAboutWindow *self,
g_free (self->website);
self->website = g_strdup (website);
- update_links (self);
+ update_details (self);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_WEBSITE]);
}
@@ -2351,6 +2422,8 @@ adw_about_window_set_support_url (AdwAboutWindow *self,
g_free (self->support_url);
self->support_url = g_strdup (support_url);
+ update_support (self);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_SUPPORT_URL]);
}
@@ -2396,6 +2469,8 @@ adw_about_window_set_issue_url (AdwAboutWindow *self,
g_free (self->issue_url);
self->issue_url = g_strdup (issue_url);
+ update_support (self);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_ISSUE_URL]);
}
@@ -2443,8 +2518,7 @@ adw_about_window_add_link (AdwAboutWindow *self,
self->has_custom_links = TRUE;
- update_links (self);
-
+ update_details (self);
}
/**
@@ -2497,6 +2571,8 @@ adw_about_window_set_debug_info (AdwAboutWindow *self,
g_free (self->debug_info);
self->debug_info = g_strdup (debug_info);
+ update_support (self);
+
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_DEBUG_INFO]);
}
@@ -2922,6 +2998,8 @@ adw_about_window_add_acknowledgement_section (AdwAboutWindow *self,
add_credits_section (self->acknowledgements_box, name, (char **) people);
gtk_widget_show (self->acknowledgements_box);
+
+ update_credits_legal_group (self);
}
/**
diff --git a/src/adw-about-window.ui b/src/adw-about-window.ui
index 4337fc28..be91616d 100644
--- a/src/adw-about-window.ui
+++ b/src/adw-about-window.ui
@@ -23,13 +23,6 @@
<object class="GtkStack" id="headerbar_stack">
<property name="transition-type">crossfade</property>
<property name="transition-duration">150</property>
- <binding name="visible-child-name">
- <closure function="get_headerbar_name" type="gchararray">
- <lookup name="value" type="GtkAdjustment">
- <lookup name="vadjustment">main_scrolled_window</lookup>
- </lookup>
- </closure>
- </binding>
<child>
<object class="GtkStackPage">
<property name="name">top</property>
@@ -73,70 +66,46 @@
<property name="orientation">vertical</property>
<property name="vexpand">True</property>
<child>
- <object class="GtkImage">
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="application-icon">AdwAboutWindow</lookup>
- </closure>
- </binding>
- <binding name="icon-name">
- <lookup name="application-icon">AdwAboutWindow</lookup>
- </binding>
+ <object class="GtkImage" id="app_icon_image">
+ <property name="visible">False</property>
<property name="pixel-size">128</property>
+ <property name="icon-name" bind-source="AdwAboutWindow"
bind-property="application-icon" bind-flags="sync-create"/>
<style>
<class name="icon-dropshadow"/>
</style>
</object>
</child>
<child>
- <object class="GtkLabel">
+ <object class="GtkLabel" id="app_name_label">
+ <property name="visible">False</property>
<property name="wrap">True</property>
<property name="justify">center</property>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="application-name">AdwAboutWindow</lookup>
- </closure>
- </binding>
- <binding name="label">
- <lookup name="application-name">AdwAboutWindow</lookup>
- </binding>
+ <property name="label" bind-source="AdwAboutWindow"
bind-property="application-name" bind-flags="sync-create"/>
<style>
<class name="title-1"/>
</style>
</object>
</child>
<child>
- <object class="GtkLabel">
+ <object class="GtkLabel" id="developer_name_label">
+ <property name="visible">False</property>
<property name="wrap">True</property>
<property name="justify">center</property>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="developer-name">AdwAboutWindow</lookup>
- </closure>
- </binding>
- <binding name="label">
- <lookup name="developer-name">AdwAboutWindow</lookup>
- </binding>
+ <property name="label" bind-source="AdwAboutWindow"
bind-property="developer-name" bind-flags="sync-create"/>
</object>
</child>
<child>
- <object class="GtkButton">
+ <object class="GtkButton" id="version_button">
+ <property name="visible">False</property>
<property name="halign">center</property>
<property name="action-name">about.copy-property</property>
<property name="action-target">"version"</property>
<property name="child">
<object class="GtkLabel">
<property name="ellipsize">end</property>
- <binding name="label">
- <lookup name="version">AdwAboutWindow</lookup>
- </binding>
+ <property name="label" bind-source="AdwAboutWindow"
bind-property="version" bind-flags="sync-create"/>
</object>
</property>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="version">AdwAboutWindow</lookup>
- </closure>
- </binding>
<style>
<class name="app-version"/>
</style>
@@ -146,27 +115,16 @@
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
- <object class="AdwPreferencesGroup">
- <binding name="visible">
- <closure function="boolean_or" type="gboolean">
- <constant type="gint">3</constant>
- <lookup name="visible">whats_new_row</lookup>
- <lookup name="visible">details_row</lookup>
- <lookup name="visible">website_row</lookup>
- </closure>
- </binding>
+ <object class="AdwPreferencesGroup" id="details_group">
+ <property name="visible">False</property>
<child>
<object class="AdwActionRow" id="whats_new_row">
+ <property name="visible">False</property>
<property name="title" translatable="yes">_What’s New</property>
<property name="use-underline">True</property>
<property name="activatable">True</property>
<property name="action-name">about.subpage</property>
<property name="action-target">"whatsnew"</property>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="text">release_notes_buffer</lookup>
- </closure>
- </binding>
<child>
<object class="GtkImage">
<property name="icon-name">go-next-symbolic</property>
@@ -176,18 +134,12 @@
</child>
<child>
<object class="AdwActionRow" id="details_row">
+ <property name="visible">False</property>
<property name="title" translatable="yes">_Details</property>
<property name="use-underline">True</property>
<property name="activatable">True</property>
<property name="action-name">about.subpage</property>
<property name="action-target">"details"</property>
- <binding name="visible">
- <closure function="boolean_or" type="gboolean">
- <constant type="gint">2</constant>
- <lookup name="visible">comments</lookup>
- <lookup name="visible">links_group</lookup>
- </closure>
- </binding>
<child>
<object class="GtkImage">
<property name="icon-name">go-next-symbolic</property>
@@ -203,9 +155,7 @@
<property name="activatable">True</property>
<property name="action-name">about.show-url-property</property>
<property name="action-target">"website"</property>
- <binding name="tooltip-text">
- <lookup name="website">AdwAboutWindow</lookup>
- </binding>
+ <property name="tooltip-text" bind-source="AdwAboutWindow"
bind-property="website" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property name="icon-name">adw-external-link-symbolic</property>
@@ -217,30 +167,17 @@
</child>
<child>
- <object class="AdwPreferencesGroup">
- <binding name="visible">
- <closure function="boolean_or" type="gboolean">
- <constant type="gint">3</constant>
- <lookup name="visible">support_row</lookup>
- <lookup name="visible">issue_row</lookup>
- <lookup name="visible">troubleshooting_row</lookup>
- </closure>
- </binding>
+ <object class="AdwPreferencesGroup" id="support_group">
+ <property name="visible">False</property>
<child>
<object class="AdwActionRow" id="support_row">
+ <property name="visible">False</property>
<property name="activatable">True</property>
<property name="title" translatable="yes">_Support
Questions</property>
<property name="use-underline">True</property>
<property name="action-name">about.show-url-property</property>
<property name="action-target">"support-url"</property>
- <binding name="tooltip-text">
- <lookup name="support-url">AdwAboutWindow</lookup>
- </binding>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="support-url">AdwAboutWindow</lookup>
- </closure>
- </binding>
+ <property name="tooltip-text" bind-source="AdwAboutWindow"
bind-property="support-url" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property name="icon-name">adw-external-link-symbolic</property>
@@ -250,19 +187,13 @@
</child>
<child>
<object class="AdwActionRow" id="issue_row">
+ <property name="visible">False</property>
<property name="activatable">True</property>
<property name="title" translatable="yes">_Report an Issue</property>
<property name="use-underline">True</property>
<property name="action-name">about.show-url-property</property>
<property name="action-target">"issue-url"</property>
- <binding name="tooltip-text">
- <lookup name="issue-url">AdwAboutWindow</lookup>
- </binding>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="issue-url">AdwAboutWindow</lookup>
- </closure>
- </binding>
+ <property name="tooltip-text" bind-source="AdwAboutWindow"
bind-property="issue-url" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property name="icon-name">adw-external-link-symbolic</property>
@@ -272,16 +203,12 @@
</child>
<child>
<object class="AdwActionRow" id="troubleshooting_row">
+ <property name="visible">False</property>
<property name="title" translatable="yes">_Troubleshooting</property>
<property name="use-underline">True</property>
<property name="activatable">True</property>
<property name="action-name">about.subpage</property>
<property name="action-target">"troubleshooting"</property>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="debug-info">AdwAboutWindow</lookup>
- </closure>
- </binding>
<child>
<object class="GtkImage">
<property name="icon-name">go-next-symbolic</property>
@@ -292,15 +219,8 @@
</object>
</child>
<child>
- <object class="AdwPreferencesGroup">
- <binding name="visible">
- <closure function="boolean_or" type="gboolean">
- <constant type="gint">3</constant>
- <lookup name="visible">credits_box</lookup>
- <lookup name="visible">legal_box</lookup>
- <lookup name="visible">acknowledgements_box</lookup>
- </closure>
- </binding>
+ <object class="AdwPreferencesGroup" id="credits_legal_group">
+ <property name="visible">False</property>
<child>
<object class="AdwActionRow">
<property name="title" translatable="yes">_Credits</property>
@@ -308,9 +228,7 @@
<property name="activatable">True</property>
<property name="action-name">about.subpage</property>
<property name="action-target">"credits"</property>
- <binding name="visible">
- <lookup name="visible">credits_box</lookup>
- </binding>
+ <property name="visible" bind-source="credits_box"
bind-property="visible" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property name="icon-name">go-next-symbolic</property>
@@ -325,9 +243,7 @@
<property name="activatable">True</property>
<property name="action-name">about.subpage</property>
<property name="action-target">"legal"</property>
- <binding name="visible">
- <lookup name="visible">legal_box</lookup>
- </binding>
+ <property name="visible" bind-source="legal_box"
bind-property="visible" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property name="icon-name">go-next-symbolic</property>
@@ -342,9 +258,7 @@
<property name="activatable">True</property>
<property name="action-name">about.subpage</property>
<property name="action-target">"acknowledgements"</property>
- <binding name="visible">
- <lookup name="visible">acknowledgements_box</lookup>
- </binding>
+ <property name="visible" bind-source="acknowledgements_box"
bind-property="visible" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property name="icon-name">go-next-symbolic</property>
@@ -459,20 +373,14 @@
<object class="GtkBox">
<property name="orientation">vertical</property>
<child>
- <object class="GtkLabel" id="comments">
+ <object class="GtkLabel" id="comments_label">
+ <property name="visible">False</property>
<property name="use-markup">True</property>
<property name="wrap">True</property>
<property name="wrap-mode">word-char</property>
<property name="xalign">0</property>
- <binding name="label">
- <lookup name="comments">AdwAboutWindow</lookup>
- </binding>
+ <property name="label" bind-source="AdwAboutWindow"
bind-property="comments" bind-flags="sync-create"/>
<signal name="activate-link" handler="activate_link_cb"
swapped="yes"/>
- <binding name="visible">
- <closure function="string_is_not_empty" type="gboolean">
- <lookup name="comments">AdwAboutWindow</lookup>
- </closure>
- </binding>
<style>
<class name="body"/>
</style>
@@ -489,9 +397,7 @@
<property name="activatable">True</property>
<property name="action-name">about.show-url-property</property>
<property name="action-target">"website"</property>
- <binding name="tooltip-text">
- <lookup name="website">AdwAboutWindow</lookup>
- </binding>
+ <property name="tooltip-text" bind-source="AdwAboutWindow"
bind-property="website" bind-flags="sync-create"/>
<child>
<object class="GtkImage">
<property
name="icon-name">adw-external-link-symbolic</property>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]