Portál AbcLinuxu, 17. listopadu 2025 07:34
#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.