From aacaf587104241bf8638a80a3fc77469632328bc Mon Sep 17 00:00:00 2001
From: Ramakrishnan Muthukrishnan <ram@rkrishnan.org>
Date: Mon, 1 Jan 2024 12:30:21 +0530
Subject: [PATCH] add a (dummy) touch event handler for rx panadapter

---
 receiver.c      | 19 +++++++++++++++++++
 receiver.h      |  1 +
 rigctl.c        |  2 ++
 rx_panadapter.c |  8 +++++++-
 4 files changed, 29 insertions(+), 1 deletion(-)

diff --git a/receiver.c b/receiver.c
index c5b6b65..c512d2b 100644
--- a/receiver.c
+++ b/receiver.c
@@ -83,6 +83,25 @@ gboolean receiver_button_press_event(GtkWidget *widget, GdkEventButton *event,
     return TRUE;
 }
 
+gboolean receiver_touch_event(GtkWidget *widget, GdkEventTouch *event,
+			      gpointer data) {
+    // XXX: handle event.touch.type == TOUCH_BEGIN and TOUCH_END
+    /* RECEIVER *rx = (RECEIVER *)data; */
+    /* if (rx == active_receiver) { */
+    /*     if (event->button == 1) { */
+    /*         last_x = (int)event->x; */
+    /*         has_moved = FALSE; */
+    /*         pressed = TRUE; */
+    /*     } else if (event->button == 3) { */
+    /*         g_idle_add(ext_start_rx, NULL); */
+    /*     } */
+    /* } else { */
+    /*     making_active = TRUE; */
+    /* } */
+    log_info("someone touched me!");
+    return TRUE;
+}
+
 void receiver_set_active(RECEIVER *rx) {
     active_receiver = rx;
     g_idle_add(menu_active_receiver_changed, NULL);
diff --git a/receiver.h b/receiver.h
index 59b53de..2024633 100644
--- a/receiver.h
+++ b/receiver.h
@@ -196,6 +196,7 @@ extern void reconfigure_receiver(RECEIVER *rx,int height);
 extern void receiver_save_state(RECEIVER *rx);
 
 extern gboolean receiver_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
+extern gboolean receiver_touch_event(GtkWidget *widget, GdkEventTouch *event, gpointer data);
 extern gboolean receiver_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data);
 extern gboolean receiver_motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data);
 extern gboolean receiver_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data);
diff --git a/rigctl.c b/rigctl.c
index 03e6692..97d0590 100644
--- a/rigctl.c
+++ b/rigctl.c
@@ -2193,6 +2193,8 @@ gboolean parse_extended_cmd(char *command, CLIENT *client) {
                     receiver[0]->nr3 = 0;
                     receiver[0]->nr4 = 1;
                     break;
+		default:
+		    break;
                 }
                 update_noise();
             }
diff --git a/rx_panadapter.c b/rx_panadapter.c
index 78b3988..e52aebd 100644
--- a/rx_panadapter.c
+++ b/rx_panadapter.c
@@ -107,6 +107,11 @@ static gboolean panadapter_button_press_event_cb(GtkWidget *widget, GdkEventButt
   return receiver_button_press_event(widget,event,data);
 }
 
+// https://docs.gtk.org/gtk3/input-handling.html
+static gboolean panadapter_touch_event_cb(GtkWidget *widget, GdkEventTouch *event, gpointer data) {
+    return receiver_touch_event(widget, event, data);
+}
+
 static gboolean panadapter_button_release_event_cb(GtkWidget *widget, GdkEventButton *event, gpointer data) {
   return receiver_button_release_event(widget,event,data);
 }
@@ -646,7 +651,8 @@ void rx_panadapter_init(RECEIVER *rx, int width,int height) {
             G_CALLBACK (panadapter_button_release_event_cb), rx);
   g_signal_connect(rx->panadapter,"scroll_event",
             G_CALLBACK(panadapter_scroll_event_cb),rx);
-
+  g_signal_connect(rx->panadapter, "touch-event",
+		   G_CALLBACK(panadapter_touch_event_cb), rx);
   /* Ask to receive events the drawing area doesn't normally
    * subscribe to. In particular, we need to ask for the
    * button press and motion notify events that want to handle.
-- 
2.45.2