Author: abrander
Date: 2010-12-19 22:35:56 +0100 (Sun, 19 Dec 2010)
New Revision: 3692
Modified:
trunk/src/rs-toolbox.c
Log:
Avoid multiple spinner-popups - and reuse old windows.
Modified: trunk/src/rs-toolbox.c
===================================================================
--- trunk/src/rs-toolbox.c 2010-12-19 21:26:00 UTC (rev 3691)
+++ trunk/src/rs-toolbox.c 2010-12-19 21:35:56 UTC (rev 3692)
@@ -367,13 +367,22 @@
case GDK_BUTTON_PRESS:
{
GtkRange *range = GTK_RANGE(user_data);
+ GtkWidget *popup;
+
+ /* Check if we can find a hidden window and just re-use
that */
+ if ((popup = g_object_get_data(G_OBJECT(range),
"rs-popup")))
+ {
+ gtk_window_present(GTK_WINDOW(popup));
+ break;
+ }
+
const gchar *blurp = g_object_get_data(G_OBJECT(range),
"rs-blurb");
GtkAdjustment* adjustment =
gtk_range_get_adjustment(range);
GtkWidget *spinner = gtk_spin_button_new(adjustment,
gtk_adjustment_get_step_increment(adjustment)/10.0,
(gtk_adjustment_get_upper(adjustment) > 99.0) ?
0 : 3);
- GtkWidget *popup = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ popup = gtk_window_new(GTK_WINDOW_TOPLEVEL);
GtkWidget *label = gtk_label_new(blurp);
GtkWidget *box = gtk_hbox_new(FALSE, 10);
gtk_window_set_title(GTK_WINDOW(popup), blurp);
@@ -385,6 +394,11 @@
gtk_container_set_border_width(GTK_CONTAINER(box), 10);
gtk_container_add(GTK_CONTAINER(popup), box);
+
+ /* We save this for later by hiding it instead of
closing */
+ g_object_set_data(G_OBJECT(range), "rs-popup", popup);
+ g_signal_connect (popup, "delete-event",
G_CALLBACK(gtk_widget_hide_on_delete), NULL);
+
gtk_widget_show_all(popup);
}
default:
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit