[balsa/wip/gtk4: 289/351] balsa-message et al: Use GtkEventControllerKey
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 289/351] balsa-message et al: Use GtkEventControllerKey
- Date: Wed, 23 May 2018 21:41:16 +0000 (UTC)
commit 88092a6b40a496bc667b2030c01042a54c8b7ad0
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Wed Apr 25 16:33:16 2018 -0400
balsa-message et al: Use GtkEventControllerKey
…to catch key presses, instead of connecting to
GtkWidget::key-press-event, which will go away some day.
src/balsa-message.c | 10 ++++++++--
src/balsa-message.h | 4 ++++
src/balsa-mime-widget-callbacks.c | 18 +++++++-----------
src/balsa-mime-widget-callbacks.h | 8 ++++++--
src/balsa-mime-widget-message.c | 3 ++-
src/balsa-mime-widget-text.c | 6 +++---
6 files changed, 30 insertions(+), 19 deletions(-)
---
diff --git a/src/balsa-message.c b/src/balsa-message.c
index fee0359..7effa27 100644
--- a/src/balsa-message.c
+++ b/src/balsa-message.c
@@ -300,7 +300,8 @@ bm_header_tl_buttons(BalsaMessage * bm)
gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
g_signal_connect(button, "clicked",
G_CALLBACK(balsa_headers_attachments_popup), bm);
- g_signal_connect(button, "key_press_event",
+ bm->button_key_controller = gtk_event_controller_key_new(button);
+ g_signal_connect(bm->button_key_controller, "key-pressed",
G_CALLBACK(balsa_mime_widget_key_press_event), bm);
g_object_set_data(G_OBJECT(bm), BALSA_MESSAGE_ATTACH_BTN, button);
g_ptr_array_add(array, button);
@@ -692,7 +693,8 @@ balsa_message_init(BalsaMessage * bm)
gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scroll),
GTK_POLICY_AUTOMATIC,
GTK_POLICY_AUTOMATIC);
- g_signal_connect(scroll, "key_press_event",
+ bm->scroll_key_controller = gtk_event_controller_key_new(scroll);
+ g_signal_connect(bm->scroll_key_controller, "key-pressed",
G_CALLBACK(balsa_mime_widget_key_press_event), bm);
gtk_widget_set_vexpand(scroll, TRUE);
gtk_box_pack_start(GTK_BOX(vbox), scroll);
@@ -808,6 +810,10 @@ balsa_message_destroy(GObject * object)
g_clear_object(&bm->parts_popup);
g_clear_object(&bm->bm_widget);
g_clear_object(&bm->gesture);
+ g_clear_object(&bm->scroll_key_controller);
+ g_clear_object(&bm->button_key_controller);
+ g_clear_object(&bm->header_key_controller);
+ g_clear_object(&bm->text_key_controller);
#ifdef HAVE_HTML_WIDGET
g_clear_object(&bm->html_find_info);
diff --git a/src/balsa-message.h b/src/balsa-message.h
index 6db56e0..622b6cc 100644
--- a/src/balsa-message.h
+++ b/src/balsa-message.h
@@ -101,6 +101,10 @@ struct _BalsaMessage {
#endif /* HAVE_HTML_WIDGET */
GtkGesture *gesture;
+ GtkEventController *scroll_key_controller;
+ GtkEventController *button_key_controller;
+ GtkEventController *header_key_controller;
+ GtkEventController *text_key_controller;
};
struct _BalsaMessageClass {
diff --git a/src/balsa-mime-widget-callbacks.c b/src/balsa-mime-widget-callbacks.c
index 39d8ccd..6018fe4 100644
--- a/src/balsa-mime-widget-callbacks.c
+++ b/src/balsa-mime-widget-callbacks.c
@@ -194,21 +194,17 @@ scroll_change(GtkAdjustment * adj, gint diff, BalsaMessage * bm)
}
gboolean
-balsa_mime_widget_key_press_event(GtkWidget * widget, GdkEvent * event,
- BalsaMessage * bm)
+balsa_mime_widget_key_press_event(GtkEventControllerKey *key_controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType state,
+ gpointer user_data)
{
+ BalsaMessage *bm = user_data;
GtkAdjustment *adj;
int page_adjust;
- guint keyval;
- GdkModifierType state;
- if (!gdk_event_get_keyval(event, &keyval) ||
- !gdk_event_get_state(event, &state)) {
- return FALSE;
- }
-
- adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW
- (bm->scroll));
+ adj = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(bm->scroll));
page_adjust = balsa_app.pgdownmod ?
(gtk_adjustment_get_page_size(adj) * balsa_app.pgdown_percent) /
diff --git a/src/balsa-mime-widget-callbacks.h b/src/balsa-mime-widget-callbacks.h
index 134f585..dfa7a64 100644
--- a/src/balsa-mime-widget-callbacks.h
+++ b/src/balsa-mime-widget-callbacks.h
@@ -30,8 +30,12 @@ G_BEGIN_DECLS
void balsa_mime_widget_ctx_menu_cb(GtkWidget * menu_item, LibBalsaMessageBody * mime_body);
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);
+gboolean balsa_mime_widget_key_press_event(GtkEventControllerKey *key_controller,
+ guint keyval,
+ guint keycode,
+ GdkModifierType state,
+ gpointer user_data);
+
void balsa_mime_widget_check_focus(GtkWidget * widget,
GParamSpec * pspec,
BalsaMessage * bm);
diff --git a/src/balsa-mime-widget-message.c b/src/balsa-mime-widget-message.c
index f1256b0..9aa03fe 100644
--- a/src/balsa-mime-widget-message.c
+++ b/src/balsa-mime-widget-message.c
@@ -487,7 +487,8 @@ bm_header_widget_new(BalsaMessage * bm, GtkWidget * const * buttons)
g_signal_connect(grid, "notify::has-focus",
G_CALLBACK(balsa_mime_widget_check_focus), bm);
- g_signal_connect(grid, "key_press_event",
+ bm->header_key_controller = gtk_event_controller_key_new(grid);
+ g_signal_connect(bm->header_key_controller, "key-pressed",
G_CALLBACK(balsa_mime_widget_key_press_event), bm);
#ifdef GTK_INFO_BAR_WRAPPING_IS_BROKEN
diff --git a/src/balsa-mime-widget-text.c b/src/balsa-mime-widget-text.c
index 3386243..a1bafcf 100644
--- a/src/balsa-mime-widget-text.c
+++ b/src/balsa-mime-widget-text.c
@@ -305,9 +305,9 @@ balsa_mime_widget_new_text(BalsaMessage * bm, LibBalsaMessageBody * mime_body,
)
libbalsa_wrap_string(ptr, balsa_app.browse_wrap_length);
- g_signal_connect(G_OBJECT(widget), "key_press_event",
- G_CALLBACK(balsa_mime_widget_key_press_event),
- (gpointer) bm);
+ bm->text_key_controller = gtk_event_controller_key_new(widget);
+ g_signal_connect(bm->text_key_controller, "key-pressed",
+ G_CALLBACK(balsa_mime_widget_key_press_event), bm);
mwt->mime_body = mime_body;
g_signal_connect(G_OBJECT(widget), "populate-popup",
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]