* GTK+ at ftp://ftp.gtk.org/pub/gtk/.
*/
+#undef GTK_DISABLE_DEPRECATED
+
#include "config.h"
#undef G_LOG_DOMAIN
GtkWidget *sw;
GtkWidget *src;
GtkWidget *snap;
- GtkWidget *vbox;
GtkWidget *hbox;
+ GtkWidget *vbox;
GtkWidget *button;
struct GetImageData *gid;
gid,
g_free);
- vbox = gtk_vbox_new (FALSE, 0);
+ hbox = gtk_hbox_new (FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window), vbox);
+ gtk_container_add (GTK_CONTAINER (window), hbox);
sw = gtk_scrolled_window_new (NULL, NULL);
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw),
src);
- gtk_box_pack_start (GTK_BOX (vbox),
+ gtk_box_pack_start (GTK_BOX (hbox),
sw, TRUE, TRUE, 0);
- hbox = gtk_hbox_new (FALSE, 3);
+ vbox = gtk_vbox_new (FALSE, 3);
snap = gtk_widget_new (GTK_TYPE_IMAGE, NULL);
gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (sw), snap);
- gtk_box_pack_end (GTK_BOX (hbox), sw, FALSE, FALSE, 5);
+ gtk_box_pack_end (GTK_BOX (vbox), sw, FALSE, FALSE, 5);
button = gtk_button_new_with_label ("Get image from drawable");
G_CALLBACK (take_snapshot),
gid);
- gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
- gtk_box_pack_end (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
+ gtk_box_pack_end (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
gtk_widget_show_all (window);
}
frame = gtk_frame_new ("Internationalized Label");
label = gtk_label_new (NULL);
gtk_label_set_markup (GTK_LABEL (label),
- "French (Français) Bonjour, Salut\n"
- "Korean (한글) 안녕하세요, 안녕하십니까\n"
- "Russian (Русский) Здравствуйте!\n"
- "Chinese (Simplified) <span lang=\"zh-cn\">元气 开发</span>\n"
- "Chinese (Traditional) <span lang=\"zh-tw\">元氣 開發</span>\n"
- "Japanese <span lang=\"ja\">元気 開発</span>");
+ "French (Fran\303\247ais) Bonjour, Salut\n"
+ "Korean (\355\225\234\352\270\200) \354\225\210\353\205\225\355\225\230\354\204\270\354\232\224, \354\225\210\353\205\225\355\225\230\354\213\255\353\213\210\352\271\214\n"
+ "Russian (\320\240\321\203\321\201\321\201\320\272\320\270\320\271) \320\227\320\264\321\200\320\260\320\262\321\201\321\202\320\262\321\203\320\271\321\202\320\265!\n"
+ "Chinese (Simplified) <span lang=\"zh-cn\">\345\205\203\346\260\224 \345\274\200\345\217\221</span>\n"
+ "Chinese (Traditional) <span lang=\"zh-tw\">\345\205\203\346\260\243 \351\226\213\347\231\274</span>\n"
+ "Japanese <span lang=\"ja\">\345\205\203\346\260\227 \351\226\213\347\231\272</span>");
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_container_add (GTK_CONTAINER (frame), label);
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
frame = gtk_frame_new ("Bidirection Label");
- label = gtk_label_new ("Arabic السلام عليكم\n"
- "Hebrew שלום");
+ label = gtk_label_new ("Arabic \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205\n"
+ "Hebrew \327\251\327\234\327\225\327\235");
gtk_widget_set_direction (label, GTK_TEXT_DIR_RTL);
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_RIGHT);
gtk_container_add (GTK_CONTAINER (frame), label);
frame = gtk_frame_new ("Underlined label");
label = gtk_label_new ("This label is underlined!\n"
- "This one is underlined (こんにちは) in quite a funky fashion");
+ "This one is underlined (\343\201\223\343\202\223\343\201\253\343\201\241\343\201\257) in quite a funky fashion");
gtk_label_set_justify (GTK_LABEL (label), GTK_JUSTIFY_LEFT);
gtk_label_set_pattern (GTK_LABEL (label), "_________________________ _ _________ _ _____ _ __ __ ___ ____ _____");
gtk_container_add (GTK_CONTAINER (frame), label);
static gboolean
grippy_button_press (GtkWidget *area, GdkEventButton *event, GdkWindowEdge edge)
{
- if (event->button == 1)
- gtk_window_begin_resize_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)), edge,
- event->button, event->x_root, event->y_root,
- event->time);
+ if (event->type == GDK_BUTTON_PRESS)
+ {
+ if (event->button == 1)
+ gtk_window_begin_resize_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)), edge,
+ event->button, event->x_root, event->y_root,
+ event->time);
+ else if (event->button == 2)
+ gtk_window_begin_move_drag (GTK_WINDOW (gtk_widget_get_toplevel (area)),
+ event->button, event->x_root, event->y_root,
+ event->time);
+ }
return TRUE;
}
vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+ /* North west */
+ area = gtk_drawing_area_new ();
+ gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+ gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+ g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_WEST));
+ g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_WEST));
+
+ /* North */
+ area = gtk_drawing_area_new ();
+ gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+ gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+ g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH));
+ g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH));
+
+ /* North east */
+ area = gtk_drawing_area_new ();
+ gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+ gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+ g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_EAST));
+ g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_NORTH_EAST));
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
+
+ /* West */
+ area = gtk_drawing_area_new ();
+ gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+ gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+ g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_WEST));
+ g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_WEST));
+
+ /* Middle */
+ area = gtk_drawing_area_new ();
+ gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+
+ /* East */
+ area = gtk_drawing_area_new ();
+ gtk_widget_add_events (area, GDK_BUTTON_PRESS_MASK);
+ gtk_box_pack_start (GTK_BOX (hbox), area, TRUE, TRUE, 0);
+ g_signal_connect (area, "expose_event", G_CALLBACK (grippy_expose),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_EAST));
+ g_signal_connect (area, "button_press_event", G_CALLBACK (grippy_button_press),
+ GINT_TO_POINTER (GDK_WINDOW_EDGE_EAST));
+
+
hbox = gtk_hbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0);
window = g_object_connect (gtk_widget_new (GTK_TYPE_WINDOW,
"type", GTK_WINDOW_TOPLEVEL,
- "x", upositionx,
- "y", upositiony,
"title", "Saved Position",
NULL),
"signal::configure_event", uposition_configure, NULL,
NULL);
+ gtk_window_move (GTK_WINDOW (window), upositionx, upositiony);
+
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (widget));
{ "/_Preferences/Shape/_Rectangle", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Square" },
{ "/_Preferences/Shape/_Oval", NULL, gtk_ifactory_cb, 0, "/Preferences/Shape/Rectangle" },
{ "/_Preferences/Shape/_Image", NULL, gtk_ifactory_cb, 0, "<ImageItem>", apple },
+ { "/_Preferences/Coffee", NULL, gtk_ifactory_cb, 0, "<CheckItem>" },
+ { "/_Preferences/Toast", NULL, gtk_ifactory_cb, 0, "<CheckItem>" },
+ { "/_Preferences/Marshmallow Froot Loops", NULL, gtk_ifactory_cb, 0, "<CheckItem>" },
/* For testing deletion of menus */
{ "/_Preferences/Should_NotAppear", NULL, 0, 0, "<Branch>" },
"/Preferences/Shape/Oval")),
TRUE);
+ /* preselect /Preferences/Coffee
+ */
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_item_factory_get_item (item_factory,
+ "/Preferences/Coffee")),
+ TRUE);
+
+ /* preselect /Preferences/Marshmallow Froot Loops and set it insensitive
+ */
+ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (gtk_item_factory_get_item (item_factory,
+ "/Preferences/Marshmallow Froot Loops")),
+ TRUE);
+ gtk_widget_set_sensitive (GTK_WIDGET (gtk_item_factory_get_item (item_factory,
+ "/Preferences/Marshmallow Froot Loops")),
+ FALSE);
+
/* Test how tooltips (ugh) work on menu items
*/
tooltips = gtk_tooltips_new ();
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
button = gtk_button_new_with_mnemonic ("Button 2 (_A)");
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
- button = gtk_button_new_with_mnemonic ("Button 3 (_ф)");
+ button = gtk_button_new_with_mnemonic ("Button 3 (_\321\204)");
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
- button = gtk_button_new_with_mnemonic ("Button 4 (_Ф)");
+ button = gtk_button_new_with_mnemonic ("Button 4 (_\320\244)");
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
button = gtk_button_new_with_mnemonic ("Button 6 (_b)");
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), button, FALSE, FALSE, 0);
gtk_box_pack_start (GTK_BOX (box2), hbox, TRUE, TRUE, 0);
entry = gtk_entry_new ();
- gtk_entry_set_text (GTK_ENTRY (entry), "hello world السلام عليكم");
+ gtk_entry_set_text (GTK_ENTRY (entry), "hello world \330\247\331\204\330\263\331\204\330\247\331\205 \330\271\331\204\331\212\331\203\331\205");
gtk_editable_select_region (GTK_EDITABLE (entry), 0, 5);
gtk_box_pack_start (GTK_BOX (hbox), entry, TRUE, TRUE, 0);
if (!window)
{
- GtkWidget *options_hbox;
- GtkWidget *check_button;
+ GtkWidget *picker;
+ GtkWidget *hbox;
+ GtkWidget *label;
- window = gtk_color_selection_dialog_new ("color selection dialog");
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (widget));
- gtk_widget_show (GTK_COLOR_SELECTION_DIALOG (window)->help_button);
-
- gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
-
g_signal_connect (window, "destroy",
- G_CALLBACK(gtk_widget_destroyed),
+ G_CALLBACK (gtk_widget_destroyed),
&window);
- options_hbox = gtk_hbox_new (FALSE, 0);
- gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox), options_hbox, FALSE, FALSE, 0);
- gtk_container_set_border_width (GTK_CONTAINER (options_hbox), 10);
-
- check_button = gtk_check_button_new_with_label ("Show Opacity");
- gtk_box_pack_start (GTK_BOX (options_hbox), check_button, FALSE, FALSE, 0);
- g_signal_connect (check_button, "toggled",
- G_CALLBACK (opacity_toggled_cb), window);
-
- check_button = gtk_check_button_new_with_label ("Show Palette");
- gtk_box_pack_end (GTK_BOX (options_hbox), check_button, FALSE, FALSE, 0);
- g_signal_connect (check_button, "toggled",
- G_CALLBACK (palette_toggled_cb), window);
-
- g_signal_connect (GTK_COLOR_SELECTION_DIALOG (window)->colorsel,
- "color_changed",
- G_CALLBACK (color_selection_changed),
- window);
+ gtk_window_set_title (GTK_WINDOW (window), "GtkColorButton");
+ gtk_container_set_border_width (GTK_CONTAINER (window), 0);
- g_signal_connect (GTK_COLOR_SELECTION_DIALOG (window)->ok_button,
- "clicked",
- G_CALLBACK (color_selection_ok),
- window);
+ hbox = gtk_hbox_new (FALSE, 8);
+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
+ gtk_container_add (GTK_CONTAINER (window), hbox);
+
+ label = gtk_label_new ("Pick a color");
+ gtk_container_add (GTK_CONTAINER (hbox), label);
- g_signal_connect_swapped (GTK_COLOR_SELECTION_DIALOG (window)->cancel_button,
- "clicked",
- G_CALLBACK (gtk_widget_destroy),
- window);
+ picker = gtk_color_button_new ();
+ gtk_color_button_set_use_alpha (GTK_COLOR_BUTTON (picker), TRUE);
+ gtk_container_add (GTK_CONTAINER (hbox), picker);
}
if (!GTK_WIDGET_VISIBLE (window))
if (!window)
{
- window = gtk_font_selection_dialog_new ("Font Selection Dialog");
+ GtkWidget *picker;
+ GtkWidget *hbox;
+ GtkWidget *label;
+ window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_screen (GTK_WINDOW (window),
gtk_widget_get_screen (widget));
- gtk_window_set_position (GTK_WINDOW (window), GTK_WIN_POS_MOUSE);
-
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_widget_destroyed),
&window);
- g_signal_connect (GTK_FONT_SELECTION_DIALOG (window)->ok_button,
- "clicked", G_CALLBACK (font_selection_ok),
- GTK_FONT_SELECTION_DIALOG (window));
- g_signal_connect_swapped (GTK_FONT_SELECTION_DIALOG (window)->cancel_button,
- "clicked", G_CALLBACK (gtk_widget_destroy),
- window);
+ gtk_window_set_title (GTK_WINDOW (window), "GtkFontButton");
+ gtk_container_set_border_width (GTK_CONTAINER (window), 0);
+
+ hbox = gtk_hbox_new (FALSE, 8);
+ gtk_container_set_border_width (GTK_CONTAINER (hbox), 8);
+ gtk_container_add (GTK_CONTAINER (window), hbox);
+
+ label = gtk_label_new ("Pick a font");
+ gtk_container_add (GTK_CONTAINER (hbox), label);
+
+ picker = gtk_font_button_new ();
+ gtk_font_button_set_use_font (GTK_FONT_BUTTON (picker), TRUE);
+ gtk_container_add (GTK_CONTAINER (hbox), picker);
}
if (!GTK_WIDGET_VISIBLE (window))
- gtk_widget_show (window);
+ gtk_widget_show_all (window);
else
gtk_widget_destroy (window);
}
notebook_homogeneous (GtkToggleButton *button,
GtkNotebook *notebook)
{
- g_object_set (G_OBJECT (notebook), "homogeneous", button->active, NULL);
+ g_object_set (notebook, "homogeneous", button->active, NULL);
}
static void
void
toggle_resize (GtkWidget *widget, GtkWidget *child)
{
- GtkPaned *paned = GTK_PANED (child->parent);
- gboolean is_child1 = (child == paned->child1);
- gboolean resize, shrink;
-
- resize = is_child1 ? paned->child1_resize : paned->child2_resize;
- shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
-
- gtk_widget_ref (child);
- gtk_container_remove (GTK_CONTAINER (child->parent), child);
- if (is_child1)
- gtk_paned_pack1 (paned, child, !resize, shrink);
- else
- gtk_paned_pack2 (paned, child, !resize, shrink);
- gtk_widget_unref (child);
+ GtkContainer *container = GTK_CONTAINER (gtk_widget_get_parent (child));
+ GValue value = { 0, };
+ g_value_init (&value, G_TYPE_BOOLEAN);
+ gtk_container_child_get_property (container, child, "resize", &value);
+ g_value_set_boolean (&value, !g_value_get_boolean (&value));
+ gtk_container_child_set_property (container, child, "resize", &value);
}
void
toggle_shrink (GtkWidget *widget, GtkWidget *child)
{
- GtkPaned *paned = GTK_PANED (child->parent);
- gboolean is_child1 = (child == paned->child1);
- gboolean resize, shrink;
-
- resize = is_child1 ? paned->child1_resize : paned->child2_resize;
- shrink = is_child1 ? paned->child1_shrink : paned->child2_shrink;
-
- gtk_widget_ref (child);
- gtk_container_remove (GTK_CONTAINER (child->parent), child);
- if (is_child1)
- gtk_paned_pack1 (paned, child, resize, !shrink);
- else
- gtk_paned_pack2 (paned, child, resize, !shrink);
- gtk_widget_unref (child);
+ GtkContainer *container = GTK_CONTAINER (gtk_widget_get_parent (child));
+ GValue value = { 0, };
+ g_value_init (&value, G_TYPE_BOOLEAN);
+ gtk_container_child_get_property (container, child, "shrink", &value);
+ g_value_set_boolean (&value, !g_value_get_boolean (&value));
+ gtk_container_child_set_property (container, child, "shrink", &value);
}
static void
"maximized" : "not maximized", ", ",
(event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) ?
"fullscreen" : "not fullscreen",
+ (event->new_window_state & GDK_WINDOW_STATE_ABOVE) ?
+ "above" : "not above", ", ",
+ (event->new_window_state & GDK_WINDOW_STATE_BELOW) ?
+ "below" : "not below", ", ",
NULL);
gtk_label_set_text (GTK_LABEL (label), msg);
return hbox;
}
+void
+keep_window_above (GtkToggleButton *togglebutton, gpointer data)
+{
+ GtkWidget *button = g_object_get_data (G_OBJECT (togglebutton), "radio");
+
+ gtk_window_set_keep_above (GTK_WINDOW (data),
+ gtk_toggle_button_get_active (togglebutton));
+
+ if (gtk_toggle_button_get_active (togglebutton))
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
+}
+
+void
+keep_window_below (GtkToggleButton *togglebutton, gpointer data)
+{
+ GtkWidget *button = g_object_get_data (G_OBJECT (togglebutton), "radio");
+
+ gtk_window_set_keep_below (GTK_WINDOW (data),
+ gtk_toggle_button_get_active (togglebutton));
+
+ if (gtk_toggle_button_get_active (togglebutton))
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), FALSE);
+}
+
+
static GtkWidget*
get_state_controls (GtkWidget *window)
{
GtkWidget *vbox;
GtkWidget *button;
+ GtkWidget *button_above;
+ GtkWidget *button_below;
vbox = gtk_vbox_new (FALSE, 0);
window,
G_CONNECT_SWAPPED);
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
-
+
+ button_above = gtk_toggle_button_new_with_label ("Keep above");
+ g_signal_connect (button_above,
+ "toggled",
+ G_CALLBACK (keep_window_above),
+ window);
+ gtk_box_pack_start (GTK_BOX (vbox), button_above, FALSE, FALSE, 0);
+
+ button_below = gtk_toggle_button_new_with_label ("Keep below");
+ g_signal_connect (button_below,
+ "toggled",
+ G_CALLBACK (keep_window_below),
+ window);
+ gtk_box_pack_start (GTK_BOX (vbox), button_below, FALSE, FALSE, 0);
+
+ g_object_set_data (G_OBJECT (button_above), "radio", button_below);
+ g_object_set_data (G_OBJECT (button_below), "radio", button_above);
+
button = gtk_button_new_with_label ("Hide (withdraw)");
g_signal_connect_object (button,
"clicked",
allow_shrink_callback (GtkWidget *widget,
gpointer data)
{
- g_object_set (G_OBJECT (g_object_get_data (data, "target")),
+ g_object_set (g_object_get_data (data, "target"),
"allow_shrink",
GTK_TOGGLE_BUTTON (widget)->active,
NULL);
allow_grow_callback (GtkWidget *widget,
gpointer data)
{
- g_object_set (G_OBJECT (g_object_get_data (data, "target")),
+ g_object_set (g_object_get_data (data, "target"),
"allow_grow",
GTK_TOGGLE_BUTTON (widget)->active,
NULL);
struct {
char *label;
- void (*func) ();
+ void (*func) (GtkWidget *widget);
gboolean do_not_benchmark;
} buttons[] =
{
if (g_file_test ("../gdk-pixbuf/libpixbufloader-pnm.la",
G_FILE_TEST_EXISTS))
{
- putenv ("GDK_PIXBUF_MODULE_FILE=../gdk-pixbuf/gdk-pixbuf.loaders");
- putenv ("GTK_IM_MODULE_FILE=../modules/input/gtk.immodules");
+ g_setenv ("GDK_PIXBUF_MODULE_FILE", "../gdk-pixbuf/gdk-pixbuf.loaders", TRUE);
+ g_setenv ("GTK_IM_MODULE_FILE", "../modules/input/gtk.immodules", TRUE);
}
}
}
static void
-bench_iteration (void (* fn) ())
+bench_iteration (GtkWidget *widget, void (* fn) (GtkWidget *widget))
{
- fn (); /* on */
+ fn (widget); /* on */
while (g_main_context_iteration (NULL, FALSE));
- fn (); /* off */
+ fn (widget); /* off */
while (g_main_context_iteration (NULL, FALSE));
}
void
-do_real_bench (void (* fn) (), char *name, int num)
+do_real_bench (GtkWidget *widget, void (* fn) (GtkWidget *widget), char *name, int num)
{
GTimeVal tv0, tv1;
double dt_first;
}
g_get_current_time (&tv0);
- bench_iteration (fn);
+ bench_iteration (widget, fn);
g_get_current_time (&tv1);
dt_first = ((double)tv1.tv_sec - tv0.tv_sec) * 1000.0
g_get_current_time (&tv0);
for (n = 0; n < num - 1; n++)
- bench_iteration (fn);
+ bench_iteration (widget, fn);
g_get_current_time (&tv1);
dt = ((double)tv1.tv_sec - tv0.tv_sec) * 1000.0
+ (tv1.tv_usec - tv0.tv_usec) / 1000.0;
do_bench (char* what, int num)
{
int i;
- void (* fn) ();
+ GtkWidget *widget;
+ void (* fn) (GtkWidget *widget);
fn = NULL;
+ widget = gtk_window_new (GTK_WINDOW_TOPLEVEL);
if (g_ascii_strcasecmp (what, "ALL") == 0)
{
for (i = 0; i < nbuttons; i++)
{
if (!buttons[i].do_not_benchmark)
- do_real_bench (buttons[i].func, buttons[i].label, num);
+ do_real_bench (widget, buttons[i].func, buttons[i].label, num);
}
return;
if (!fn)
g_print ("Can't bench: \"%s\" not found.\n", what);
else
- do_real_bench (fn, buttons[i].label, num);
+ do_real_bench (widget, fn, buttons[i].label, num);
}
}