You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
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.
43 lines
1.1 KiB
C
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
|