commit 509c0923eb4f01c2e4389b5a7c76391382a0c95c
parent 4440035b7982731c60649992fc41eeacdc539b11
Author: Jacki <jacki@thejackimonster.de>
Date: Sat, 15 Jun 2024 01:54:48 +0200
Adjust navigatable property regarding flap state
Signed-off-by: Jacki <jacki@thejackimonster.de>
Diffstat:
3 files changed, 69 insertions(+), 2 deletions(-)
diff --git a/src/ui/chat.c b/src/ui/chat.c
@@ -44,19 +44,68 @@
#include "../file.h"
#include "../ui.h"
+static void
+handle_chat_details_switched(HdySwipeable* swipeable,
+ guint index,
+ gint64 duration,
+ gpointer user_data)
+{
+ g_assert((swipeable) && (user_data));
+
+ HdyFlap* flap = HDY_FLAP(swipeable);
+ UI_CHAT_Handle *handle = (UI_CHAT_Handle*) user_data;
+ UI_MESSENGER_Handle *messenger = &(handle->app->ui.messenger);
+
+ const gboolean revealed = hdy_flap_get_reveal_flap(flap);
+
+ hdy_leaflet_set_can_swipe_back(messenger->leaflet_title, !revealed);
+ hdy_leaflet_set_can_swipe_back(messenger->leaflet_chat, !revealed);
+
+ if (handle->title)
+ {
+ gtk_widget_set_sensitive(
+ GTK_WIDGET(handle->title->back_button),
+ !revealed
+ );
+
+ gtk_widget_set_sensitive(
+ GTK_WIDGET(handle->title->chat_search_button),
+ !revealed
+ );
+ }
+
+ GValue value = G_VALUE_INIT;
+ g_value_init(&value, G_TYPE_BOOLEAN);
+ g_value_set_boolean(&value, !revealed);
+
+ gtk_container_child_set_property(
+ GTK_CONTAINER(messenger->leaflet_title),
+ GTK_WIDGET(messenger->nav_bar),
+ "navigatable",
+ &value
+ );
+
+ gtk_container_child_set_property(
+ GTK_CONTAINER(messenger->leaflet_chat),
+ messenger->nav_box,
+ "navigatable",
+ &value
+ );
+
+ g_value_unset(&value);
+}
+
static gboolean
_flap_chat_details_reveal_switch(gpointer user_data)
{
g_assert(user_data);
UI_CHAT_Handle *handle = (UI_CHAT_Handle*) user_data;
- UI_MESSENGER_Handle *messenger = &(handle->app->ui.messenger);
HdyFlap* flap = handle->flap_chat_details;
gboolean revealed = hdy_flap_get_reveal_flap(flap);
hdy_flap_set_reveal_flap(flap, !revealed);
- hdy_leaflet_set_can_swipe_back(messenger->leaflet_chat, revealed);
gtk_widget_set_sensitive(GTK_WIDGET(handle->messages_listbox), TRUE);
return FALSE;
@@ -1176,6 +1225,13 @@ ui_chat_new(MESSENGER_Application *app,
gtk_builder_get_object(handle->builder, "flap_chat_details")
);
+ g_signal_connect(
+ handle->flap_chat_details,
+ "child-switched",
+ G_CALLBACK(handle_chat_details_switched),
+ handle
+ );
+
handle->chat_search_bar = HDY_SEARCH_BAR(
gtk_builder_get_object(handle->builder, "chat_search_bar")
);
diff --git a/src/ui/messenger.c b/src/ui/messenger.c
@@ -468,6 +468,14 @@ ui_messenger_init(MESSENGER_Application *app,
gtk_builder_get_object(handle->builder, "flap_user_details")
);
+ handle->nav_box = GTK_WIDGET(
+ gtk_builder_get_object(handle->builder, "nav_box")
+ );
+
+ handle->main_box = GTK_WIDGET(
+ gtk_builder_get_object(handle->builder, "main_box")
+ );
+
handle->nav_bar = HDY_HEADER_BAR(
gtk_builder_get_object(handle->builder, "nav_bar")
);
diff --git a/src/ui/messenger.h b/src/ui/messenger.h
@@ -48,6 +48,9 @@ typedef struct UI_MESSENGER_Handle
HdyLeaflet *leaflet_chat;
HdyFlap *flap_user_details;
+ GtkWidget *nav_box;
+ GtkWidget *main_box;
+
HdyHeaderBar *nav_bar;
HdyHeaderBar *main_bar;