messenger-gtk

Gtk+3 graphical user interfaces for GNUnet Messenger
Log | Files | Refs | Submodules | README | LICENSE

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:
Msrc/ui/chat.c | 60++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
Msrc/ui/messenger.c | 8++++++++
Msrc/ui/messenger.h | 3+++
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;