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 {