Mercurial > dwindows
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 |