comparison gtk3/dw.c @ 1545:6edf3fce77f2

Initial support for container and MLE auto-sizing on GTK3... Also default MLE controls to word wrap... since it was like that on Windows and Mac already.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Fri, 13 Jan 2012 06:37:28 +0000
parents b7136c130a66
children e39e9e67110d
comparison
equal deleted inserted replaced
1544:1fd3a9635c4d 1545:6edf3fce77f2
3767 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(tmpbox), 3767 gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(tmpbox),
3768 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS); 3768 GTK_POLICY_AUTOMATIC, GTK_POLICY_ALWAYS);
3769 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(tmpbox), GTK_SHADOW_ETCHED_IN); 3769 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(tmpbox), GTK_SHADOW_ETCHED_IN);
3770 tmp = gtk_text_view_new(); 3770 tmp = gtk_text_view_new();
3771 gtk_container_add (GTK_CONTAINER(tmpbox), tmp); 3771 gtk_container_add (GTK_CONTAINER(tmpbox), tmp);
3772 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_NONE); 3772 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_WORD);
3773 3773
3774 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id)); 3774 g_object_set_data(G_OBJECT(tmp), "_dw_id", GINT_TO_POINTER(id));
3775 g_object_set_data(G_OBJECT(tmpbox), "_dw_user", (gpointer)tmp); 3775 g_object_set_data(G_OBJECT(tmpbox), "_dw_user", (gpointer)tmp);
3776 gtk_widget_show(tmp); 3776 gtk_widget_show(tmp);
3777 gtk_widget_show(tmpbox); 3777 gtk_widget_show(tmpbox);
4739 if(GTK_IS_SCROLLED_WINDOW(handle)) 4739 if(GTK_IS_SCROLLED_WINDOW(handle))
4740 { 4740 {
4741 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user"); 4741 GtkWidget *tmp = (GtkWidget *)g_object_get_data(G_OBJECT(handle), "_dw_user");
4742 4742
4743 if(tmp && GTK_IS_TEXT_VIEW(tmp)) 4743 if(tmp && GTK_IS_TEXT_VIEW(tmp))
4744 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), GTK_WRAP_WORD); 4744 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(tmp), state ? GTK_WRAP_WORD : GTK_WRAP_NONE);
4745 } 4745 }
4746 DW_MUTEX_UNLOCK; 4746 DW_MUTEX_UNLOCK;
4747 } 4747 }
4748 4748
4749 /* 4749 /*
8464 gtk_grid_insert_column(GTK_GRID(box), index); 8464 gtk_grid_insert_column(GTK_GRID(box), index);
8465 #endif 8465 #endif
8466 gtk_grid_attach(GTK_GRID(box), item, index, 0, 1, 1); 8466 gtk_grid_attach(GTK_GRID(box), item, index, 0, 1, 1);
8467 } 8467 }
8468 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount + 1)); 8468 g_object_set_data(G_OBJECT(box), "_dw_boxcount", GINT_TO_POINTER(boxcount + 1));
8469 /* Set the requested size of the widget */ 8469 /* Special case for scrolled windows */
8470 if(GTK_IS_SCROLLED_WINDOW(item)) 8470 if(GTK_IS_SCROLLED_WINDOW(item))
8471 { 8471 {
8472 if(width > 0) 8472 if(width > 0)
8473 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), width); 8473 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), width);
8474 else if(!hsize) 8474 else if(!hsize)
8475 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), 500); 8475 {
8476 /* If we aren't expandable set the minimum width */
8477 gint thiswidth = 0;
8478 GtkWidget *widget = g_object_get_data(G_OBJECT(item), "_dw_user");
8479
8480 if(widget)
8481 {
8482 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
8483 thiswidth = _DW_SCROLLED_MAX_WIDTH;
8484 else
8485 gtk_widget_get_preferred_width(GTK_WIDGET(widget), NULL, &thiswidth);
8486 }
8487 if(thiswidth < _DW_SCROLLED_MIN_WIDTH)
8488 thiswidth = _DW_SCROLLED_MIN_WIDTH;
8489 if(thiswidth > _DW_SCROLLED_MAX_WIDTH)
8490 thiswidth = _DW_SCROLLED_MAX_WIDTH;
8491 gtk_scrolled_window_set_min_content_width(GTK_SCROLLED_WINDOW(item), thiswidth);
8492 }
8476 if(height > 0) 8493 if(height > 0)
8477 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), height); 8494 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), height);
8478 else if(!vsize) 8495 else if(!vsize)
8479 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), 200); 8496 {
8497 /* If we aren't expandable set the minimum height */
8498 gint thisheight = 0;
8499 GtkWidget *widget = g_object_get_data(G_OBJECT(item), "_dw_user");
8500
8501 if(widget)
8502 {
8503 if(g_object_get_data(G_OBJECT(widget), "_dw_tree_type") == GINT_TO_POINTER(_DW_TREE_TYPE_TREE))
8504 thisheight = _DW_SCROLLED_MAX_HEIGHT;
8505 else
8506 gtk_widget_get_preferred_height(GTK_WIDGET(widget), NULL, &thisheight);
8507 }
8508 if(thisheight < _DW_SCROLLED_MIN_HEIGHT)
8509 thisheight = _DW_SCROLLED_MIN_HEIGHT;
8510 if(thisheight > _DW_SCROLLED_MAX_HEIGHT)
8511 thisheight = _DW_SCROLLED_MAX_HEIGHT;
8512 gtk_scrolled_window_set_min_content_height(GTK_SCROLLED_WINDOW(item), thisheight);
8513 }
8480 } 8514 }
8481 else 8515 else
8482 { 8516 {
8517 /* Set the requested size of the widget */
8483 if(width == -1 && (GTK_IS_COMBO_BOX(item) || GTK_IS_ENTRY(item))) 8518 if(width == -1 && (GTK_IS_COMBO_BOX(item) || GTK_IS_ENTRY(item)))
8484 gtk_widget_set_size_request(item, 150, height); 8519 gtk_widget_set_size_request(item, 150, height);
8485 else if(width == -1 && GTK_IS_SPIN_BUTTON(item)) 8520 else if(width == -1 && GTK_IS_SPIN_BUTTON(item))
8486 gtk_widget_set_size_request(item, 50, height); 8521 gtk_widget_set_size_request(item, 50, height);
8487 else 8522 else