[balsa/wip/gtk4: 125/351] Various events have been removed
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 125/351] Various events have been removed
- Date: Wed, 23 May 2018 21:27:27 +0000 (UTC)
commit 3bb4f730232523562d8425a7e9df5820ffb36b94
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Thu Jan 18 08:44:37 2018 -0500
Various events have been removed
The "focus-in-event", "focus-out-event", and "delete-event" signals have
been removed. For focus changes we connect to "notify::has-focus";
GtkWidget::delete-event is replaced by GtkWindow::close-request.
libbalsa/address-view.c | 81 +++++++++++++++++++++---------------
libbalsa/macosx-helpers.c | 19 +++++----
src/ab-main.c | 7 ---
src/balsa-message.c | 22 +++-------
src/balsa-mime-widget-callbacks.c | 43 +++++++++----------
src/balsa-mime-widget-callbacks.h | 5 +-
src/balsa-mime-widget-message.c | 6 +--
src/balsa-mime-widget.c | 8 +---
src/main-window.c | 38 ++++++++---------
src/sendmsg-window.c | 20 +++++-----
10 files changed, 118 insertions(+), 131 deletions(-)
---
diff --git a/libbalsa/address-view.c b/libbalsa/address-view.c
index 864c529..cc930ec 100644
--- a/libbalsa/address-view.c
+++ b/libbalsa/address-view.c
@@ -742,43 +742,56 @@ lbav_editing_done(GtkCellEditable * cell_editable,
/*
- * Focus Out callback
+ * notify::has-focus callback
* If only one completion matches, fill it into the entry
*/
-static gboolean
-lbav_focus_out_cb(GtkEntry * entry, GdkEventFocus * event,
- LibBalsaAddressView * address_view)
+static void
+lbav_notify_has_focus_cb(GtkEntry *entry,
+ GParamSpec *pspec,
+ LibBalsaAddressView *address_view)
{
- const gchar *the_entry = gtk_entry_get_text(entry);
-
- if (the_entry && *the_entry) {
- GList *match;
-
- match = lbav_get_matching_addresses(address_view,
- the_entry,
- LIBBALSA_ADDRESS_VIEW_MATCH_ALL);
-
- if (match) {
- if (!match->next) {
- gchar *the_addr =
- internet_address_to_string((InternetAddress *) match->
- data, FALSE);
-
- g_signal_handlers_block_by_func(entry,
- lbav_entry_changed_cb,
- address_view);
- gtk_entry_set_text(entry, the_addr);
- g_signal_handlers_unblock_by_func(entry,
- lbav_entry_changed_cb,
- address_view);
- gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry));
- g_free(the_addr);
- }
- g_list_free_full(match, g_object_unref);
- }
+ const gchar *the_entry;
+ GList *match;
+
+ if (gtk_widget_has_focus(GTK_WIDGET(entry))) {
+ /* Not a focus-out event */
+ return;
}
- return FALSE;
+ the_entry = gtk_entry_get_text(entry);
+
+ if (the_entry == NULL || the_entry[0] == '\0') {
+ /* No text to match */
+ return;
+ }
+
+ match = lbav_get_matching_addresses(address_view, the_entry,
+ LIBBALSA_ADDRESS_VIEW_MATCH_ALL);
+
+ if (match == NULL) {
+ /* No matching addresses */
+ return;
+ }
+
+ if (match->next == NULL) {
+ /* Only one match */
+ gchar *the_addr;
+
+ g_signal_handlers_block_by_func(entry,
+ lbav_entry_changed_cb,
+ address_view);
+
+ the_addr = internet_address_to_string(match->data, FALSE);
+ gtk_entry_set_text(entry, the_addr);
+ g_free(the_addr);
+
+ g_signal_handlers_unblock_by_func(entry,
+ lbav_entry_changed_cb,
+ address_view);
+ gtk_cell_editable_editing_done(GTK_CELL_EDITABLE(entry));
+ }
+
+ g_list_free_full(match, g_object_unref);
}
@@ -820,8 +833,8 @@ lbav_row_editing_cb(GtkCellRenderer * renderer,
G_CALLBACK(lbav_insert_text_cb), address_view);
g_signal_connect(editable, "editing-done",
G_CALLBACK(lbav_editing_done), address_view);
- g_signal_connect_after(GTK_ENTRY(editable), "focus-out-event",
- G_CALLBACK(lbav_focus_out_cb), address_view);
+ g_signal_connect_after(editable, "notify::has-focus",
+ G_CALLBACK(lbav_notify_has_focus_cb), address_view);
gtk_entry_set_completion(GTK_ENTRY(editable), completion);
g_object_unref(completion);
diff --git a/libbalsa/macosx-helpers.c b/libbalsa/macosx-helpers.c
index 8faa662..15cec6b 100644
--- a/libbalsa/macosx-helpers.c
+++ b/libbalsa/macosx-helpers.c
@@ -37,7 +37,7 @@ void
libbalsa_macosx_menu(GtkWidget *window, GtkMenuShell *menubar)
{
g_object_set_data(G_OBJECT(window), "osx-menubar", menubar);
- g_signal_connect(G_OBJECT(window), "focus-in-event",
+ g_signal_connect(window, "notify::has-focus",
G_CALLBACK(update_osx_menubar), window);
}
@@ -46,26 +46,27 @@ void
libbalsa_macosx_menu_for_parent(GtkWidget *window, GtkWindow *parent)
{
if(parent)
- g_signal_connect(G_OBJECT(window), "focus-in-event",
+ g_signal_connect(window, "notify::has-focus",
G_CALLBACK(update_osx_menubar), parent);
else
g_message("called %s for widget %p with NULL parent", __func__, window);
}
-/* window "focus-in-event" callback for a window
+/* window "notify::has-focus" callback for a window
* get the "osx-menubar" from the user data object, and set it as OS X main menu
*/
-static gboolean
-update_osx_menubar(GtkWidget *widget, GdkEventFocus *event, GtkWindow *window)
+static void
+update_osx_menubar(GtkWidget *widget, GParamSpec *pspec, GtkWindow *window)
{
GtkMenuShell *menubar;
-
- g_return_val_if_fail(window != NULL, FALSE);
+
+ g_return_if_fail(window != NULL);
+ if (!gtk_widget_has_focus(widget))
+ return;
menubar = GTK_MENU_SHELL(g_object_get_data(G_OBJECT(window), "osx-menubar"));
- g_return_val_if_fail(menubar != NULL, FALSE);
+ g_return_if_fail(menubar != NULL);
ige_mac_menu_set_menu_bar(menubar);
- return FALSE;
}
#endif /* HAVE_MACOSX_DESKTOP */
diff --git a/src/ab-main.c b/src/ab-main.c
index 63b517a..ea4441c 100644
--- a/src/ab-main.c
+++ b/src/ab-main.c
@@ -992,11 +992,6 @@ bab_window_new(GtkApplication * application)
return wnd;
}
-static gboolean
-bab_delete_ok(void)
-{
- return FALSE;
-}
/* -------------------------- main --------------------------------- */
static void
ab_warning(const char *fmt, ...)
@@ -1112,8 +1107,6 @@ main(int argc, char *argv[])
g_signal_connect(G_OBJECT(ab_window), "destroy",
G_CALLBACK(bab_cleanup), NULL);
- g_signal_connect(G_OBJECT(ab_window), "delete-event",
- G_CALLBACK(bab_delete_ok), NULL);
bab_set_intial_address_book(ab, ab_window);
/* session management */
diff --git a/src/balsa-message.c b/src/balsa-message.c
index 33a9901..0b5c02c 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -282,11 +282,8 @@ bm_header_tl_buttons(BalsaMessage * bm)
button = gtk_button_new_from_icon_name(balsa_icon_id(BALSA_PIXMAP_GPG_RECHECK));
gtk_widget_set_tooltip_text(button,
_("Check cryptographic signature"));
- g_signal_connect(G_OBJECT(button), "focus_in_event",
- G_CALLBACK(balsa_mime_widget_limit_focus),
- (gpointer) bm);
- g_signal_connect(G_OBJECT(button), "focus_out_event",
- G_CALLBACK(balsa_mime_widget_unlimit_focus),
+ g_signal_connect(G_OBJECT(button), "notify::has-focus",
+ G_CALLBACK(balsa_mime_widget_check_focus),
(gpointer) bm);
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
g_signal_connect(button, "clicked",
@@ -297,11 +294,8 @@ bm_header_tl_buttons(BalsaMessage * bm)
button = gtk_button_new_from_icon_name(balsa_icon_id(BALSA_PIXMAP_ATTACHMENT));
gtk_widget_set_tooltip_text(button,
_("Select message part to display"));
- g_signal_connect(G_OBJECT(button), "focus_in_event",
- G_CALLBACK(balsa_mime_widget_limit_focus),
- (gpointer) bm);
- g_signal_connect(G_OBJECT(button), "focus_out_event",
- G_CALLBACK(balsa_mime_widget_unlimit_focus),
+ g_signal_connect(G_OBJECT(button), "notify::has-focus",
+ G_CALLBACK(balsa_mime_widget_check_focus),
(gpointer) bm);
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
g_signal_connect(button, "clicked",
@@ -716,12 +710,8 @@ balsa_message_init(BalsaMessage * bm)
g_free(buttons);
/* Widget to hold message */
- g_signal_connect(G_OBJECT(bm->bm_widget->widget), "focus_in_event",
- G_CALLBACK(balsa_mime_widget_limit_focus),
- (gpointer) bm);
- g_signal_connect(G_OBJECT(bm->bm_widget->widget), "focus_out_event",
- G_CALLBACK(balsa_mime_widget_unlimit_focus),
- (gpointer) bm);
+ g_signal_connect(bm->bm_widget->widget, "notify::has-focus",
+ G_CALLBACK(balsa_mime_widget_check_focus), bm);
gtk_container_add(GTK_CONTAINER(bm->scroll), bm->bm_widget->widget);
/* structure view */
diff --git a/src/balsa-mime-widget-callbacks.c b/src/balsa-mime-widget-callbacks.c
index 0500b94..513f29a 100644
--- a/src/balsa-mime-widget-callbacks.c
+++ b/src/balsa-mime-widget-callbacks.c
@@ -265,32 +265,29 @@ balsa_mime_widget_key_press_event(GtkWidget * widget, GdkEvent * event,
}
-gint
-balsa_mime_widget_limit_focus(GtkWidget * widget, GdkEventFocus * event, BalsaMessage * bm)
+void
+balsa_mime_widget_check_focus(GtkWidget * widget, GParamSpec * pspec, BalsaMessage * bm)
{
- /* Disable can_focus on other message parts so that TAB does not
- * attempt to move the focus on them. */
- GList *list = g_list_append(NULL, widget);
-
- gtk_container_set_focus_chain(GTK_CONTAINER(bm->bm_widget->container), list);
- g_list_free(list);
- if (bm->focus_state == BALSA_MESSAGE_FOCUS_STATE_NO)
- bm->focus_state = BALSA_MESSAGE_FOCUS_STATE_YES;
- return FALSE;
-}
+ if (gtk_widget_has_focus(widget)) {
+ /* Disable can_focus on other message parts so that TAB does not
+ * attempt to move the focus on them. */
+ GList *list;
+ list = g_list_append(NULL, widget);
+ gtk_container_set_focus_chain(GTK_CONTAINER(bm->bm_widget->container), list);
+ g_list_free(list);
-gint
-balsa_mime_widget_unlimit_focus(GtkWidget * widget, GdkEventFocus * event, BalsaMessage * bm)
-{
- gtk_container_unset_focus_chain(GTK_CONTAINER(bm->bm_widget->container));
- if (bm->message) {
- BalsaMessageFocusState focus_state = bm->focus_state;
- if (focus_state == BALSA_MESSAGE_FOCUS_STATE_HOLD) {
- balsa_message_grab_focus(bm);
+ if (bm->focus_state == BALSA_MESSAGE_FOCUS_STATE_NO)
bm->focus_state = BALSA_MESSAGE_FOCUS_STATE_YES;
- } else
- bm->focus_state = BALSA_MESSAGE_FOCUS_STATE_NO;
+ } else {
+ gtk_container_unset_focus_chain(GTK_CONTAINER(bm->bm_widget->container));
+
+ if (bm->message != NULL) {
+ if (bm->focus_state == BALSA_MESSAGE_FOCUS_STATE_HOLD) {
+ balsa_message_grab_focus(bm);
+ bm->focus_state = BALSA_MESSAGE_FOCUS_STATE_YES;
+ } else
+ bm->focus_state = BALSA_MESSAGE_FOCUS_STATE_NO;
+ }
}
- return FALSE;
}
diff --git a/src/balsa-mime-widget-callbacks.h b/src/balsa-mime-widget-callbacks.h
index a54ab5a..134f585 100644
--- a/src/balsa-mime-widget-callbacks.h
+++ b/src/balsa-mime-widget-callbacks.h
@@ -32,8 +32,9 @@ void balsa_mime_widget_ctx_menu_save(GtkWidget * parent_widget,
LibBalsaMessageBody * mime_body);
gboolean balsa_mime_widget_key_press_event(GtkWidget * widget, GdkEvent * event,
BalsaMessage * bm);
-gint balsa_mime_widget_limit_focus(GtkWidget * widget, GdkEventFocus * event, BalsaMessage * bm);
-gint balsa_mime_widget_unlimit_focus(GtkWidget * widget, GdkEventFocus * event, BalsaMessage * bm);
+void balsa_mime_widget_check_focus(GtkWidget * widget,
+ GParamSpec * pspec,
+ BalsaMessage * bm);
G_END_DECLS
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index 42df289..b7f1004 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -466,10 +466,8 @@ bm_header_widget_new(BalsaMessage * bm, GtkWidget * const * buttons)
gtk_grid_set_column_spacing(GTK_GRID(grid), 12);
gtk_widget_show(grid);
- g_signal_connect(grid, "focus_in_event",
- G_CALLBACK(balsa_mime_widget_limit_focus), bm);
- g_signal_connect(grid, "focus_out_event",
- G_CALLBACK(balsa_mime_widget_unlimit_focus), bm);
+ g_signal_connect(grid, "notify::has-focus",
+ G_CALLBACK(balsa_mime_widget_check_focus), bm);
g_signal_connect(grid, "key_press_event",
G_CALLBACK(balsa_mime_widget_key_press_event), bm);
diff --git a/src/balsa-mime-widget.c b/src/balsa-mime-widget.c
index 07062d0..4762ac6 100644
--- a/src/balsa-mime-widget.c
+++ b/src/balsa-mime-widget.c
@@ -144,12 +144,8 @@ balsa_mime_widget_new(BalsaMessage * bm, LibBalsaMessageBody * mime_body, gpoint
if (mw) {
if (mw->widget) {
- g_signal_connect(G_OBJECT(mw->widget), "focus_in_event",
- G_CALLBACK(balsa_mime_widget_limit_focus),
- (gpointer) bm);
- g_signal_connect(G_OBJECT(mw->widget), "focus_out_event",
- G_CALLBACK(balsa_mime_widget_unlimit_focus),
- (gpointer) bm);
+ g_signal_connect(mw->widget, "notify::has-focus",
+ G_CALLBACK(balsa_mime_widget_check_focus), bm);
#ifdef HAVE_GPGME
if (mime_body->sig_info &&
g_ascii_strcasecmp("application/pgp-signature", content_type) &&
diff --git a/src/main-window.c b/src/main-window.c
index c01f3ee..a7e06a9 100644
--- a/src/main-window.c
+++ b/src/main-window.c
@@ -266,7 +266,7 @@ balsa_window_init(BalsaWindow * window)
}
static gboolean
-bw_delete_cb(GtkWidget* main_window)
+bw_close_request_cb(GtkWidget * main_window)
{
/* we cannot leave main window disabled because compose windows
* (for example) could refuse to get deleted and we would be left
@@ -318,20 +318,20 @@ bw_pass_to_filter(BalsaWindow *bw, GdkEventKey *event, gpointer data)
g_signal_emit_by_name(bw->sos_entry, "key_press_event", event, &res, data);
return res;
}
-static gboolean
-bw_enable_filter(GtkWidget *widget, GdkEventFocus *event, gpointer data)
-{
- g_signal_connect(G_OBJECT(data), "key_press_event",
- G_CALLBACK(bw_pass_to_filter), NULL);
- return FALSE;
-}
-static gboolean
-bw_disable_filter(GtkWidget *widget, GdkEventFocus *event, gpointer data)
+
+static void
+bw_check_filter(GtkWidget *widget, GParamSpec *pspec, gpointer data)
{
- g_signal_handlers_disconnect_by_func(G_OBJECT(data),
- G_CALLBACK(bw_pass_to_filter),
- NULL);
- return FALSE;
+ BalsaWindow *window = data;
+
+ if (gtk_widget_has_focus(widget)) {
+ g_signal_connect(window, "key_press_event",
+ G_CALLBACK(bw_pass_to_filter), NULL);
+ } else {
+ g_signal_handlers_disconnect_by_func(window,
+ G_CALLBACK(bw_pass_to_filter),
+ NULL);
+ }
}
static void
@@ -481,10 +481,8 @@ bw_create_index_widget(BalsaWindow *bw)
bw->sos_entry = gtk_entry_new();
/* gtk_label_set_mnemonic_widget(GTK_LABEL(bw->filter_choice),
bw->sos_entry); */
- g_signal_connect(G_OBJECT(bw->sos_entry), "focus_in_event",
- G_CALLBACK(bw_enable_filter), bw);
- g_signal_connect(G_OBJECT(bw->sos_entry), "focus_out_event",
- G_CALLBACK(bw_disable_filter), bw);
+ g_signal_connect(G_OBJECT(bw->sos_entry), "notify::has-focus",
+ G_CALLBACK(bw_check_filter), bw);
gtk_widget_set_hexpand(bw->sos_entry, TRUE);
gtk_box_pack_start(GTK_BOX(bw->sos_bar), bw->sos_entry);
gtk_widget_show(bw->sos_entry);
@@ -2378,8 +2376,8 @@ balsa_window_new()
G_CALLBACK(bw_size_allocate_cb), NULL);
g_signal_connect(window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
- g_signal_connect(window, "delete-event",
- G_CALLBACK(bw_delete_cb), NULL);
+ g_signal_connect(window, "close-request",
+ G_CALLBACK(bw_close_request_cb), NULL);
/* Cancel new-mail notification when we get the focus. */
g_signal_connect(window, "notify::is-active",
diff --git a/src/sendmsg-window.c b/src/sendmsg-window.c
index fe63b9f..d2bc05f 100644
--- a/src/sendmsg-window.c
+++ b/src/sendmsg-window.c
@@ -488,8 +488,8 @@ sw_delete_draft(BalsaSendmsg * bsmsg)
LIBBALSA_MESSAGE_FLAG_DELETED, 0);
}
-static gint
-delete_handler(BalsaSendmsg * bsmsg)
+static gboolean
+close_handler(BalsaSendmsg * bsmsg)
{
InternetAddressList *list;
InternetAddress *ia;
@@ -548,12 +548,12 @@ delete_handler(BalsaSendmsg * bsmsg)
return FALSE;
}
-static gint
-delete_event_cb(GtkWidget * widget, GdkEvent * e, gpointer data)
+static gboolean
+close_request_cb(GtkWidget * widget, gpointer data)
{
BalsaSendmsg *bsmsg = data;
- return delete_handler(bsmsg);
+ return close_handler(bsmsg);
}
static void
@@ -566,7 +566,7 @@ sw_close_activated(GSimpleAction * action,
BALSA_DEBUG_MSG("close_window_cb: start\n");
g_object_set_data(G_OBJECT(bsmsg->window), "destroying",
GINT_TO_POINTER(TRUE));
- if(!delete_handler(bsmsg))
+ if(!close_handler(bsmsg))
gtk_widget_destroy(bsmsg->window);
BALSA_DEBUG_MSG("close_window_cb: end\n");
}
@@ -6623,8 +6623,8 @@ sendmsg_window_new()
bsmsg->draft_message = NULL;
bsmsg->parent_message = NULL;
- g_signal_connect(G_OBJECT(window), "delete-event",
- G_CALLBACK(delete_event_cb), bsmsg);
+ g_signal_connect(window, "close-request",
+ G_CALLBACK(close_request_cb), bsmsg);
g_signal_connect(G_OBJECT(window), "destroy",
G_CALLBACK(destroy_event_cb), bsmsg);
g_signal_connect(G_OBJECT(window), "size_allocate",
@@ -6730,8 +6730,8 @@ sendmsg_window_new()
bsmsg->update_config = TRUE;
bsmsg->delete_sig_id =
- g_signal_connect(G_OBJECT(balsa_app.main_window), "delete-event",
- G_CALLBACK(delete_event_cb), bsmsg);
+ g_signal_connect(G_OBJECT(balsa_app.main_window), "close-request",
+ G_CALLBACK(close_request_cb), bsmsg);
setup_headers_from_identity(bsmsg, bsmsg->ident);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]