sacha67
sacha67

Reputation: 3

In GTK (C++ Version), how to make a box bigger than others?

int main(int argc, char **argv)
{
  GtkWidget *pWindow;
  GtkWidget *pVBox;
  GtkWidget *pEntry;
  GtkWidget *pButton;
  GtkWidget *pLabel;
  GtkWidget *text_view;
  GtkWidget *scrollbar;

  gtk_init(&argc, &argv);

  pWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title(GTK_WINDOW(pWindow), "My IRC");
  gtk_window_set_default_size(GTK_WINDOW(pWindow), 800, 600);
  g_signal_connect(G_OBJECT(pWindow), "destroy", G_CALLBACK(gtk_main_quit), NULL);

  pVBox = gtk_vbox_new(TRUE, 0);
  pEntry = gtk_entry_new();
  pLabel = gtk_label_new(NULL);
  text_view = gtk_text_new(NULL, NULL);
  scrollbar = gtk_scrolled_window_new(NULL, NULL);

  gtk_container_add(GTK_CONTAINER(pWindow), pVBox);
  gtk_box_pack_start(GTK_BOX(pVBox), scrollbar, TRUE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX(pVBox), pEntry, TRUE, FALSE, 0);
  gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrollbar), text_view);

  g_signal_connect(G_OBJECT(pEntry), "activate", G_CALLBACK(on_activate_entry), (GtkWidget*) text_view);

  gtk_widget_show_all(pWindow);

  gtk_main();

  return EXIT_SUCCESS;
}

I want to make the text_view box bigger than the other one. I couldn't find any solutions in the GTK documentation.

PS: It's GTK 2.0.

Upvotes: 0

Views: 75

Answers (1)

andlabs
andlabs

Reputation: 11578

The two boolean arguments of gtk_box_pack_start() are expand and fill. When expand is true, the widget gets extra space after allocating other widgets. When fill is true, the widget is resized to fill that space. So what you want to do instead is

  // expand AND fill - fills all available space
  gtk_box_pack_start(GTK_BOX(pVBox), scrollbar, TRUE, TRUE, 0);
  // NO expand AND NO fill - only uses what it needs
  gtk_box_pack_start(GTK_BOX(pVBox), pEntry, FALSE, FALSE, 0);

Here's a page with more information. Note that you can use the [hv](expand|align) properties with boxes as well as grids (and use gtk_container_add(), which acts like gtk_box_pack_start()).

Upvotes: 1

Related Questions