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
FrameLayout: replace with AOSPs implementation
There are many Widgets extending FrameLayout and adding custom behaviour on top. For example NavigationView. This didn't realy work with our custom implementation
This commit is contained in:
@@ -1,84 +0,0 @@
|
||||
#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);
|
||||
wrapper_widget_set_jobject(WRAPPER_WIDGET(wrapper), env, this);
|
||||
gtk_widget_set_name(GTK_WIDGET(frame_layout), "FrameLayout");
|
||||
return _INTPTR(frame_layout);
|
||||
}
|
||||
Reference in New Issue
Block a user