Files
android_translation_layer/src/api-impl-jni/widgets/WrapperWidget.h
Julian Winkler 23e7d32924 Button/ImageButton: consume touch events
Androids button consumes touch events, while GTKs button lets touch
events propagate to the parent. This previously caused some glitches
with buttons inside a CoordinatorLayout.
2024-07-31 18:21:14 +02:00

43 lines
1.1 KiB
C

#ifndef WRAPPER_WIDGET_H
#define WRAPPER_WIDGET_H
#include <jni.h>
#include <gtk/gtk.h>
G_DECLARE_FINAL_TYPE (WrapperWidget, wrapper_widget, WRAPPER, WIDGET, GtkWidget)
struct _WrapperWidget
{
GtkWidget parent_instance;
GtkWidget *child;
GtkWidget *background;
JavaVM *jvm;
jobject jobj;
jobject canvas;
jmethodID draw_method;
jmethodID measure_method;
jmethodID computeScroll_method;
int layout_width;
int layout_height;
int real_width;
int real_height;
gboolean needs_allocation;
};
struct _WrapperWidgetClass
{
GtkWidgetClass parent_class;
};
GtkWidget * wrapper_widget_new(void);
void wrapper_widget_set_child(WrapperWidget *parent, GtkWidget *child);
void wrapper_widget_set_jobject(WrapperWidget *wrapper, JNIEnv *env, jobject jobj);
void wrapper_widget_queue_draw(WrapperWidget *wrapper);
void wrapper_widget_set_layout_params(WrapperWidget *wrapper, int width, int height);
void wrapper_widget_set_background(WrapperWidget *wrapper, GdkPaintable *paintable);
void wrapper_widget_consume_touch_events(WrapperWidget *wrapper);
void _setOnTouchListener(JNIEnv *env, jobject this, GtkWidget *widget, jobject on_touch_listener);
#endif