Mercurial > dwindows
comparison gtk3/dw.c @ 1577:fdafbc654e9d
Switch to using GtkGrid instead of GtkTable in the MDI code for GTK3.
This should eliminate all deprecated functions in GTK 3.4.
Buttons on MDI windows are expanding when they shouldn't, fix forthcoming.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Mon, 23 Jan 2012 22:44:08 +0000 |
parents | 85fa989dc833 |
children | 36f0cfda3be3 |
comparison
equal
deleted
inserted
replaced
1576:85fa989dc833 | 1577:fdafbc654e9d |
---|---|
36 #endif | 36 #endif |
37 | 37 |
38 #include <gdk-pixbuf/gdk-pixbuf.h> | 38 #include <gdk-pixbuf/gdk-pixbuf.h> |
39 | 39 |
40 #if !GTK_CHECK_VERSION(3,1,0) | 40 #if !GTK_CHECK_VERSION(3,1,0) |
41 #error GTK 3.0 is no longer supported. | 41 #error GTK 3.0 is no longer supported, please use 3.2 or later. |
42 #endif | 42 #endif |
43 | 43 |
44 #if __STDC_VERSION__ < 199901L | 44 #if __STDC_VERSION__ < 199901L |
45 # if __GNUC__ >= 2 | 45 # if __GNUC__ >= 2 |
46 # define __func__ __FUNCTION__ | 46 # define __func__ __FUNCTION__ |
378 | 378 |
379 static void gtk_mdi_put(GtkMdi *mdi, GtkWidget *child_widget, gint x, gint y, GtkWidget *label) | 379 static void gtk_mdi_put(GtkMdi *mdi, GtkWidget *child_widget, gint x, gint y, GtkWidget *label) |
380 { | 380 { |
381 GtkMdiChild *child; | 381 GtkMdiChild *child; |
382 | 382 |
383 GtkWidget *table; | 383 GtkWidget *grid; |
384 GtkWidget *button[3]; | 384 GtkWidget *button[3]; |
385 | 385 |
386 GtkWidget *child_box; | 386 GtkWidget *child_box; |
387 GtkWidget *top_event_box; | 387 GtkWidget *top_event_box; |
388 GtkWidget *bottom_event_box; | 388 GtkWidget *bottom_event_box; |
394 GdkCursor *cursor; | 394 GdkCursor *cursor; |
395 GdkPixbuf *pixbuf; | 395 GdkPixbuf *pixbuf; |
396 | 396 |
397 child_box = gtk_event_box_new (); | 397 child_box = gtk_event_box_new (); |
398 child_widget_box = gtk_event_box_new (); | 398 child_widget_box = gtk_event_box_new (); |
399 gtk_widget_set_margin_left(child_widget_box, 2); | |
399 top_event_box = gtk_event_box_new (); | 400 top_event_box = gtk_event_box_new (); |
400 bottom_event_box = gtk_event_box_new (); | 401 bottom_event_box = gtk_event_box_new (); |
401 table = gtk_table_new (4, 7, FALSE); | 402 grid = gtk_grid_new (); |
402 gtk_table_set_row_spacings (GTK_TABLE (table), 1); | 403 gtk_grid_set_row_spacing(GTK_GRID(grid), 1); |
403 gtk_table_set_col_spacings (GTK_TABLE (table), 1); | 404 gtk_grid_set_column_spacing(GTK_GRID(grid), 1); |
404 gtk_table_set_row_spacing (GTK_TABLE (table), 3, 0); | 405 |
405 gtk_table_set_col_spacing (GTK_TABLE (table), 6, 0); | |
406 gtk_table_set_row_spacing (GTK_TABLE (table), 2, 0); | |
407 gtk_table_set_col_spacing (GTK_TABLE (table), 5, 0); | |
408 | |
409 for (i = 0; i < 3; i++) | 406 for (i = 0; i < 3; i++) |
410 { | 407 { |
411 button[i] = gtk_event_box_new (); | 408 button[i] = gtk_event_box_new (); |
412 gtk_widget_set_events (button[0], GDK_BUTTON_PRESS_MASK); | 409 gtk_widget_set_events (button[i], GDK_BUTTON_PRESS_MASK); |
413 } | 410 } |
414 | 411 |
415 gdk_rgba_parse (&color, GTK_MDI_LABEL_BACKGROUND); | 412 gdk_rgba_parse (&color, GTK_MDI_LABEL_BACKGROUND); |
416 | 413 |
417 gtk_widget_override_background_color (top_event_box, GTK_STATE_NORMAL, &color); | 414 gtk_widget_override_background_color (top_event_box, GTK_STATE_NORMAL, &color); |
444 pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **) kill_xpm); | 441 pixbuf = gdk_pixbuf_new_from_xpm_data((const gchar **) kill_xpm); |
445 image = gtk_image_new_from_pixbuf(pixbuf); | 442 image = gtk_image_new_from_pixbuf(pixbuf); |
446 gtk_widget_show(image); | 443 gtk_widget_show(image); |
447 gtk_container_add (GTK_CONTAINER (button[2]), image); | 444 gtk_container_add (GTK_CONTAINER (button[2]), image); |
448 | 445 |
449 gtk_table_attach (GTK_TABLE (table), child_widget_box, 1, 6, 2, 3, | 446 |
450 GTK_EXPAND | GTK_SHRINK | GTK_FILL, | 447 /* Titlebar and buttons - GTK_FILL | GTK_EXPAND | GTK_SHRINK, 0 */ |
451 GTK_EXPAND | GTK_SHRINK | GTK_FILL, | 448 gtk_grid_attach (GTK_GRID (grid), top_event_box, 0, 0, 1, 1); |
452 0, 0); | 449 gtk_grid_attach (GTK_GRID (grid), button[0], 1, 0, 1, 1); |
453 gtk_table_attach (GTK_TABLE (table), top_event_box, 1, 2, 1, 2, | 450 gtk_grid_attach (GTK_GRID (grid), button[1], 2, 0, 1, 1); |
454 GTK_FILL | GTK_EXPAND | GTK_SHRINK, | 451 gtk_grid_attach (GTK_GRID (grid), button[2], 3, 0, 1, 1); |
455 0, | 452 |
456 0, 0); | 453 /* Window contents - GTK_EXPAND | GTK_SHRINK | GTK_FILL, GTK_EXPAND | GTK_SHRINK | GTK_FILL */ |
457 gtk_table_attach (GTK_TABLE (table), bottom_event_box, 6, 7, 3, 4, | 454 gtk_grid_attach (GTK_GRID (grid), child_widget_box, 0, 1, 4, 1); |
458 0, | 455 |
459 0, | 456 /* Bottom border */ |
460 0, 0); | 457 gtk_grid_attach (GTK_GRID (grid), bottom_event_box, 4, 2, 1, 1); |
461 gtk_table_attach (GTK_TABLE (table), button[0], 2, 3, 1, 2, | 458 |
462 0, | 459 gtk_container_add (GTK_CONTAINER (child_box), grid); |
463 0, | |
464 0, 0); | |
465 gtk_table_attach (GTK_TABLE (table), button[1], 3, 4, 1, 2, | |
466 0, | |
467 0, | |
468 0, 0); | |
469 gtk_table_attach (GTK_TABLE (table), button[2], 4, 5, 1, 2, | |
470 0, | |
471 0, | |
472 0, 0); | |
473 | |
474 gtk_container_add (GTK_CONTAINER (child_box), table); | |
475 | 460 |
476 child = g_new (GtkMdiChild, 1); | 461 child = g_new (GtkMdiChild, 1); |
477 child->widget = child_box; | 462 child->widget = child_box; |
478 child->x = x; | 463 child->x = x; |
479 child->y = y; | 464 child->y = y; |
485 | 470 |
486 gtk_widget_set_parent (child_box, GTK_WIDGET (mdi)); | 471 gtk_widget_set_parent (child_box, GTK_WIDGET (mdi)); |
487 mdi->children = g_list_append (mdi->children, child); | 472 mdi->children = g_list_append (mdi->children, child); |
488 | 473 |
489 gtk_widget_show (child_box); | 474 gtk_widget_show (child_box); |
490 gtk_widget_show (table); | 475 gtk_widget_show (grid); |
491 gtk_widget_show (top_event_box); | 476 gtk_widget_show (top_event_box); |
492 gtk_widget_show (bottom_event_box); | 477 gtk_widget_show (bottom_event_box); |
493 gtk_widget_show (child_widget_box); | 478 gtk_widget_show (child_widget_box); |
494 for (i = 0; i < 3; i++) | 479 for (i = 0; i < 3; i++) |
495 { | 480 { |