[prev in list] [next in list] [prev in thread] [next in thread]
List: gtk-devel
Subject: Re: GTK3 - GtkExpander problem, bug ?
From: Eric Cashon via gtk-devel-list <gtk-devel-list () gnome ! org>
Date: 2017-12-14 19:28:38
Message-ID: 160568003ca-1727-4b725 () webjas-vab019 ! srv ! aolmail ! net
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
Hi Sébastien,
If I try some test code... it should work. The code uses a grid instead of a fixed \
container. Is this similar to what you have tried?
Eric
/*
gcc -Wall buttons1.c -o buttons1 `pkg-config --cflags --libs gtk+-3.0`
Tested with GTK3.18 on Ubuntu16.04
*/
#include<gtk/gtk.h>
static void button_clicked1(GtkWidget *button, gpointer user_data)
{
g_print("1 %s\n", gtk_button_get_label(GTK_BUTTON(button)));
}
static void button_clicked2(GtkWidget *button, gpointer user_data)
{
g_print("2 %s\n", gtk_button_get_label(GTK_BUTTON(button)));
}
int main(int argc, char *argv[])
{
gtk_init (&argc, &argv);
GtkWidget *window=gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(window), "Buttons");
gtk_window_set_default_size(GTK_WINDOW(window), 400, 400);
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gint i=0;
gint j=0;
GtkWidget *buttons1[100];
GtkWidget *buttons2[100];
//First set of buttons.
for(i=0;i<100;i++)
{
gchar *string=g_strdup_printf("button%i", i);
buttons1[i]=gtk_button_new_with_label(string);
g_free(string);
}
GtkWidget *grid1=gtk_grid_new();
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
gtk_grid_attach(GTK_GRID(grid1), buttons1[i*10+j], j, i, 1, 1);
g_signal_connect(buttons1[i*10+j], "clicked", \
G_CALLBACK(button_clicked1), NULL); }
}
//Second set of buttons.
for(i=0;i<100;i++)
{
gchar *string=g_strdup_printf("button%i", i);
buttons2[i]=gtk_button_new_with_label(string);
g_free(string);
}
GtkWidget *grid2=gtk_grid_new();
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
gtk_grid_attach(GTK_GRID(grid2), buttons2[i*10+j], j, i, 1, 1);
g_signal_connect(buttons2[i*10+j], "clicked", \
G_CALLBACK(button_clicked2), NULL); }
}
GtkWidget *scroll1=gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_vexpand(scroll1, TRUE);
gtk_widget_set_hexpand(scroll1, TRUE);
gtk_container_add(GTK_CONTAINER(scroll1), grid1);
GtkWidget *scroll2=gtk_scrolled_window_new(NULL, NULL);
gtk_widget_set_vexpand(scroll2, TRUE);
gtk_widget_set_hexpand(scroll2, TRUE);
gtk_container_add(GTK_CONTAINER(scroll2), grid2);
GtkWidget *expander1=gtk_expander_new("buttons1");
gtk_container_add(GTK_CONTAINER(expander1), scroll1);
GtkWidget *expander2=gtk_expander_new("buttons2");
gtk_container_add(GTK_CONTAINER(expander2), scroll2);
GtkWidget *grid3=gtk_grid_new();
gtk_grid_attach(GTK_GRID(grid3), expander1, 0, 0, 1, 1);
gtk_grid_attach(GTK_GRID(grid3), expander2, 0, 1, 1, 1);
gtk_container_add(GTK_CONTAINER(window), grid3);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
[Attachment #5 (text/html)]
<font color='black' size='2' face='arial'>
<div> <font size="2"><br>
Hi Sébastien,<br>
<br>
If I try some test code... it should work. The code uses a grid instead of a fixed \
container. Is this similar to what you have tried?<br> <br>
Eric<br>
<br>
/*<br>
gcc -Wall buttons1.c -o buttons1 `pkg-config --cflags --libs \
gtk+-3.0`<br> Tested with GTK3.18 on Ubuntu16.04<br>
*/<br>
#include<gtk/gtk.h><br>
<br>
static void button_clicked1(GtkWidget *button, gpointer user_data)<br>
{<br>
g_print("1 %s\n", gtk_button_get_label(GTK_BUTTON(button)));<br>
}<br>
static void button_clicked2(GtkWidget *button, gpointer user_data)<br>
{<br>
g_print("2 %s\n", gtk_button_get_label(GTK_BUTTON(button)));<br>
}<br>
int main(int argc, char *argv[])<br>
{<br>
gtk_init (&argc, &argv);<br>
<br>
GtkWidget *window=gtk_window_new (GTK_WINDOW_TOPLEVEL);<br>
gtk_window_set_title(GTK_WINDOW(window), "Buttons");<br>
gtk_window_set_default_size(GTK_WINDOW(window), 400, 400);<br>
gtk_window_set_position(GTK_WINDOW(window), \
GTK_WIN_POS_CENTER);<br> g_signal_connect(window, "destroy", \
G_CALLBACK(gtk_main_quit), NULL);<br> <br>
gint i=0;<br>
gint j=0;<br>
GtkWidget *buttons1[100];<br>
GtkWidget *buttons2[100];<br>
<br>
//First set of buttons.<br>
for(i=0;i<100;i++)<br>
{<br>
gchar *string=g_strdup_printf("button%i", \
i);<br> \
buttons1[i]=gtk_button_new_with_label(string);<br> \
g_free(string);<br> \
}<br> <br>
GtkWidget *grid1=gtk_grid_new();<br>
for(i=0;i<10;i++)<br>
{<br>
for(j=0;j<10;j++)<br>
{<br>
\
gtk_grid_attach(GTK_GRID(grid1), buttons1[i*10+j], j, i, 1, 1);<br> \
\
g_signal_connect(buttons1[i*10+j], "clicked", G_CALLBACK(button_clicked1), NULL);<br> \
}<br> \
} <br> <br>
//Second set of buttons.<br>
for(i=0;i<100;i++)<br>
{<br>
gchar *string=g_strdup_printf("button%i", \
i);<br> \
buttons2[i]=gtk_button_new_with_label(string);<br> \
g_free(string);<br> \
}<br> <br>
GtkWidget *grid2=gtk_grid_new();<br>
for(i=0;i<10;i++)<br>
{<br>
for(j=0;j<10;j++)<br>
{<br>
\
gtk_grid_attach(GTK_GRID(grid2), buttons2[i*10+j], j, i, 1, 1);<br> \
\
g_signal_connect(buttons2[i*10+j], "clicked", G_CALLBACK(button_clicked2), NULL);<br> \
}<br> \
} <br> <br>
GtkWidget *scroll1=gtk_scrolled_window_new(NULL, NULL);<br>
gtk_widget_set_vexpand(scroll1, TRUE);<br>
gtk_widget_set_hexpand(scroll1, TRUE);<br>
gtk_container_add(GTK_CONTAINER(scroll1), grid1);<br>
<br>
GtkWidget *scroll2=gtk_scrolled_window_new(NULL, NULL);<br>
gtk_widget_set_vexpand(scroll2, TRUE);<br>
gtk_widget_set_hexpand(scroll2, TRUE);<br>
gtk_container_add(GTK_CONTAINER(scroll2), grid2);<br>
<br>
GtkWidget *expander1=gtk_expander_new("buttons1");<br>
gtk_container_add(GTK_CONTAINER(expander1), scroll1);<br>
<br>
GtkWidget *expander2=gtk_expander_new("buttons2");<br>
gtk_container_add(GTK_CONTAINER(expander2), scroll2);<br>
<br>
GtkWidget *grid3=gtk_grid_new();<br>
gtk_grid_attach(GTK_GRID(grid3), expander1, 0, 0, 1, 1);<br>
gtk_grid_attach(GTK_GRID(grid3), expander2, 0, 1, 1, 1);<br>
<br>
gtk_container_add(GTK_CONTAINER(window), grid3);<br>
<br>
gtk_widget_show_all(window);<br>
<br>
gtk_main();<br>
<br>
return 0;<br>
} </font><br>
</div>
<div> <br>
</div>
<br>
</font>
_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic