Mercurial > dwindows
comparison gtk3/dw.c @ 836:28f9810dfebc
More work on getting MDI working again.... still doesn't work right unfortunately.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 27 Mar 2011 19:08:45 +0000 |
parents | 82072ff08513 |
children | d51e958aad95 |
comparison
equal
deleted
inserted
replaced
835:82072ff08513 | 836:28f9810dfebc |
---|---|
238 gint cid; | 238 gint cid; |
239 void *intfunc; | 239 void *intfunc; |
240 | 240 |
241 } SignalHandler; | 241 } SignalHandler; |
242 | 242 |
243 #define SIGNALMAX 19 | 243 #define SIGNALMAX 18 |
244 | 244 |
245 /* A list of signal forwarders, to account for paramater differences. */ | 245 /* A list of signal forwarders, to account for paramater differences. */ |
246 static SignalList SignalTranslate[SIGNALMAX] = { | 246 static SignalList SignalTranslate[SIGNALMAX] = { |
247 { _configure_event, DW_SIGNAL_CONFIGURE }, | 247 { _configure_event, DW_SIGNAL_CONFIGURE }, |
248 { _key_press_event, DW_SIGNAL_KEY_PRESS }, | 248 { _key_press_event, DW_SIGNAL_KEY_PRESS }, |
336 static void gtk_mdi_class_init(GtkMdiClass *klass); | 336 static void gtk_mdi_class_init(GtkMdiClass *klass); |
337 static void gtk_mdi_init(GtkMdi *mdi); | 337 static void gtk_mdi_init(GtkMdi *mdi); |
338 | 338 |
339 static void gtk_mdi_realize(GtkWidget *widget); | 339 static void gtk_mdi_realize(GtkWidget *widget); |
340 static void gtk_mdi_size_allocate(GtkWidget *widget, GtkAllocation *allocation); | 340 static void gtk_mdi_size_allocate(GtkWidget *widget, GtkAllocation *allocation); |
341 #if 0 | 341 static gint gtk_mdi_expose(GtkWidget *widget, cairo_t *cr, gpointer data); |
342 static void gtk_mdi_size_request(GtkWidget *widget, GtkRequisition *requisition); | 342 static void gtk_mdi_get_preferred_width (GtkWidget *widget, gint *minimum_width, gint *natural_width); |
343 static gint gtk_mdi_expose(GtkWidget *widget, GdkEventExpose *event); | 343 static void gtk_mdi_get_preferred_height (GtkWidget *widget, gint *minimum_height, gint *natural_height); |
344 #endif | |
345 | 344 |
346 /* Callbacks */ | 345 /* Callbacks */ |
347 static gboolean move_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data); | 346 static gboolean move_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data); |
348 static gboolean resize_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data); | 347 static gboolean resize_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data); |
349 static gboolean iconify_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data); | 348 static gboolean iconify_child_callback(GtkWidget *widget, GdkEvent *event, gpointer data); |
408 container_class = (GtkContainerClass *) class; | 407 container_class = (GtkContainerClass *) class; |
409 | 408 |
410 parent_class = g_type_class_ref (GTK_TYPE_CONTAINER); | 409 parent_class = g_type_class_ref (GTK_TYPE_CONTAINER); |
411 | 410 |
412 widget_class->realize = gtk_mdi_realize; | 411 widget_class->realize = gtk_mdi_realize; |
413 #if 0 /* TODO */ | 412 widget_class->draw = gtk_mdi_expose; |
414 widget_class->expose_event = gtk_mdi_expose; | 413 widget_class->get_preferred_height = gtk_mdi_get_preferred_height; |
415 widget_class->size_request = gtk_mdi_size_request; | 414 widget_class->get_preferred_width = gtk_mdi_get_preferred_width; |
416 #endif | |
417 widget_class->size_allocate = gtk_mdi_size_allocate; | 415 widget_class->size_allocate = gtk_mdi_size_allocate; |
418 | 416 |
419 container_class->add = gtk_mdi_add; | 417 container_class->add = gtk_mdi_add; |
420 container_class->remove = gtk_mdi_remove_true; | 418 container_class->remove = gtk_mdi_remove_true; |
421 container_class->forall = gtk_mdi_forall; | 419 container_class->forall = gtk_mdi_forall; |
748 gdk_window_set_user_data (gtk_widget_get_window(widget), widget); | 746 gdk_window_set_user_data (gtk_widget_get_window(widget), widget); |
749 | 747 |
750 gtk_style_set_background (gtk_widget_get_style(widget), gtk_widget_get_window(widget), GTK_STATE_NORMAL); | 748 gtk_style_set_background (gtk_widget_get_style(widget), gtk_widget_get_window(widget), GTK_STATE_NORMAL); |
751 } | 749 } |
752 | 750 |
753 #if 0 | 751 static void gtk_mdi_get_preferred_width (GtkWidget *widget, gint *minimum_width, gint *natural_width) |
754 static void gtk_mdi_size_request (GtkWidget *widget, GtkRequisition *requisition) | |
755 { | 752 { |
756 GtkMdi *mdi; | 753 GtkMdi *mdi; |
757 GtkMdiChild *child; | 754 GtkMdiChild *child; |
758 GList *children; | 755 GList *children; |
759 GtkRequisition child_requisition; | 756 gint child_minimum_width, child_natural_width; |
760 | 757 |
761 mdi = GTK_MDI (widget); | 758 mdi = GTK_MDI (widget); |
762 requisition->width = GTK_MDI_DEFAULT_WIDTH; | 759 *natural_width = *minimum_width = GTK_MDI_DEFAULT_WIDTH; |
763 requisition->height = GTK_MDI_DEFAULT_HEIGHT; | |
764 | 760 |
765 children = mdi->children; | 761 children = mdi->children; |
766 while(children) | 762 while(children) |
767 { | 763 { |
768 child = children->data; | 764 child = children->data; |
769 children = children->next; | 765 children = children->next; |
770 | 766 |
771 if(gtk_widget_get_visible(child->widget)) | 767 if(gtk_widget_get_visible(child->widget)) |
772 { | 768 { |
773 gtk_widget_size_request(child->widget, &child_requisition); | 769 gtk_widget_get_preferred_width(child->widget, &child_minimum_width, &child_natural_width); |
774 } | 770 } |
775 } | 771 } |
776 } | 772 } |
777 #endif | 773 |
774 static void gtk_mdi_get_preferred_height (GtkWidget *widget, gint *minimum_height, gint *natural_height) | |
775 { | |
776 GtkMdi *mdi; | |
777 GtkMdiChild *child; | |
778 GList *children; | |
779 gint child_minimum_height, child_natural_height; | |
780 | |
781 mdi = GTK_MDI (widget); | |
782 *natural_height = *minimum_height = GTK_MDI_DEFAULT_HEIGHT; | |
783 | |
784 children = mdi->children; | |
785 while(children) | |
786 { | |
787 child = children->data; | |
788 children = children->next; | |
789 | |
790 if(gtk_widget_get_visible(child->widget)) | |
791 { | |
792 gtk_widget_get_preferred_height(child->widget, &child_minimum_height, &child_natural_height); | |
793 } | |
794 } | |
795 } | |
778 | 796 |
779 static void gtk_mdi_size_allocate(GtkWidget *widget, GtkAllocation *allocation) | 797 static void gtk_mdi_size_allocate(GtkWidget *widget, GtkAllocation *allocation) |
780 { | 798 { |
781 GtkMdi *mdi; | 799 GtkMdi *mdi; |
782 GtkMdiChild *child; | 800 GtkMdiChild *child; |
855 gtk_widget_size_allocate (child->widget, &child_allocation); | 873 gtk_widget_size_allocate (child->widget, &child_allocation); |
856 } | 874 } |
857 } | 875 } |
858 } | 876 } |
859 | 877 |
860 #if 0 /* TODO: Is this needed... propogate expose is no longer supported */ | 878 static gint gtk_mdi_expose(GtkWidget *widget, cairo_t *cr, gpointer data) |
861 static gint gtk_mdi_expose(GtkWidget *widget, GdkEventExpose *event) | |
862 { | 879 { |
863 GtkMdiChild *child; | 880 GtkMdiChild *child; |
864 GList *children; | 881 GList *children; |
865 GtkMdi *mdi; | 882 GtkMdi *mdi; |
866 | 883 |
867 g_return_val_if_fail (widget != NULL, FALSE); | 884 g_return_val_if_fail (widget != NULL, FALSE); |
868 g_return_val_if_fail (GTK_IS_MDI (widget), FALSE); | 885 g_return_val_if_fail (GTK_IS_MDI (widget), FALSE); |
869 g_return_val_if_fail (event != NULL, FALSE); | 886 g_return_val_if_fail (cr != NULL, FALSE); |
870 | 887 |
871 mdi = GTK_MDI (widget); | 888 mdi = GTK_MDI (widget); |
872 for (children = mdi->children; children; children = children->next) | 889 for (children = mdi->children; children; children = children->next) |
873 { | 890 { |
874 child = (GtkMdiChild *) children->data; | 891 child = (GtkMdiChild *) children->data; |
875 gtk_container_propagate_expose (GTK_CONTAINER (mdi), | 892 gtk_container_propagate_draw (GTK_CONTAINER (mdi), |
876 child->widget, | 893 child->widget, |
877 event); | 894 cr); |
878 } | 895 } |
879 return FALSE; | 896 return FALSE; |
880 } | 897 } |
881 #endif | |
882 | 898 |
883 static void gtk_mdi_add(GtkContainer *container, GtkWidget *widget) | 899 static void gtk_mdi_add(GtkContainer *container, GtkWidget *widget) |
884 { | 900 { |
885 GtkWidget *label; | 901 GtkWidget *label; |
886 label = gtk_label_new (""); | 902 label = gtk_label_new (""); |