Portál AbcLinuxu, 10. května 2025 03:25
#include <gtk/gtk.h> static gboolean exposed(GtkWidget *fixed, G_GNUC_UNUSED GdkEventExpose *event) { GdkGC *gc = gdk_gc_new(fixed->window); GtkAllocation *alloc = &fixed->allocation; gdk_draw_line(fixed->window, gc, alloc->x, alloc->y, alloc->x + alloc->width, alloc->y + alloc->height); g_object_unref(gc); return FALSE; } int main(int argc, char *argv[]) { GtkWidget *window, *frame, *fixed; gtk_init(&argc, &argv); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_container_set_border_width(GTK_CONTAINER(window), 40); g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); frame = gtk_frame_new(NULL); gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN); gtk_container_add(GTK_CONTAINER(window), frame); fixed = gtk_fixed_new(); g_printerr("GtkFixed is: %s\n", GTK_WIDGET_NO_WINDOW(fixed) ? "NO_WINDOW" : "WINDOW"); gtk_widget_set_size_request(fixed, 200, 100); g_signal_connect(fixed, "expose-event", G_CALLBACK(exposed), NULL); gtk_container_add(GTK_CONTAINER(frame), fixed); gtk_widget_show_all(window); gtk_main(); return 0; }
gtk_fixed_init()
, ale v gtk_fixed_realize()
počítá i s možností, že není NO_WINDOW. Mám nějakou šanci mu ten flag změnit před tím, než se mu zavolá realize?
GTK_WIDGET_UNSET_FLAGS(fixed, GTK_NO_WINDOW);
gtk_fixed_set_has_window()
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.