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
84 lines
2.3 KiB
C
84 lines
2.3 KiB
C
#include <gtk/gtk.h>
|
|
|
|
#include "../defines.h"
|
|
#include "../util.h"
|
|
|
|
#include "WrapperWidget.h"
|
|
|
|
#include "../generated_headers/android_widget_FrameLayout.h"
|
|
#include "../generated_headers/android_view_ViewGroup.h"
|
|
|
|
G_DECLARE_FINAL_TYPE (FrameLayoutWidget, frame_layout_widget, FRAME_LAYOUT, WIDGET, GtkWidget)
|
|
|
|
struct _FrameLayoutWidget
|
|
{
|
|
GtkWidget parent_instance;
|
|
};
|
|
|
|
struct _FrameLayoutWidgetClass
|
|
{
|
|
GtkWidgetClass parent_class;
|
|
};
|
|
|
|
G_DEFINE_TYPE(FrameLayoutWidget, frame_layout_widget, GTK_TYPE_WIDGET)
|
|
|
|
static void frame_layout_widget_init (FrameLayoutWidget *frame_layout)
|
|
{
|
|
|
|
}
|
|
|
|
static void frame_layout_widget_dispose(GObject *frame_layout)
|
|
{
|
|
GtkWidget *child;
|
|
while((child = gtk_widget_get_first_child(GTK_WIDGET(frame_layout))) != NULL) {
|
|
gtk_widget_unparent(child);
|
|
}
|
|
|
|
G_OBJECT_CLASS (frame_layout_widget_parent_class)->dispose (frame_layout);
|
|
}
|
|
|
|
static void frame_layout_widget_class_init(FrameLayoutWidgetClass *class)
|
|
{
|
|
GObjectClass *object_class = G_OBJECT_CLASS (class);
|
|
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (class);
|
|
|
|
object_class->dispose = frame_layout_widget_dispose;
|
|
|
|
gtk_widget_class_set_layout_manager_type(widget_class, GTK_TYPE_BIN_LAYOUT);
|
|
}
|
|
|
|
GtkWidget * frame_layout_widget_new (void)
|
|
{
|
|
return g_object_new (frame_layout_widget_get_type(), NULL);
|
|
}
|
|
|
|
void frame_layout_widget_insert_child(FrameLayoutWidget *parent, GtkWidget *child)
|
|
{
|
|
printf("::::::::::: FrameLayoutWidget: inserting something at the end of the widget list\n");
|
|
gtk_widget_insert_before(child, GTK_WIDGET(parent), NULL);
|
|
}
|
|
|
|
void frame_layout_widget_insert_child_at_index(FrameLayoutWidget *parent, GtkWidget *child, int index)
|
|
{
|
|
printf("::::::::::: FrameLayoutWidget: inserting something at index %d\n", index);
|
|
GtkWidget *iter = gtk_widget_get_first_child(GTK_WIDGET(parent));
|
|
for(int i = 0; i < index; i++) {
|
|
iter = gtk_widget_get_next_sibling(iter);
|
|
if(iter == NULL)
|
|
break;
|
|
}
|
|
|
|
gtk_widget_insert_before(child, GTK_WIDGET(parent), iter);
|
|
}
|
|
|
|
// ---
|
|
|
|
JNIEXPORT jlong JNICALL Java_android_widget_FrameLayout_native_1constructor(JNIEnv *env, jobject this, jobject context, jobject attrs)
|
|
{
|
|
GtkWidget *wrapper = g_object_ref(wrapper_widget_new());
|
|
GtkWidget *frame_layout = frame_layout_widget_new();
|
|
wrapper_widget_set_child(WRAPPER_WIDGET(wrapper), frame_layout);
|
|
gtk_widget_set_name(GTK_WIDGET(frame_layout), "FrameLayout");
|
|
return _INTPTR(frame_layout);
|
|
}
|