[Xfce4-commits] <ristretto:master> Create limit-quality option
Stephan Arts
noreply at xfce.org
Fri Apr 27 21:54:01 CEST 2012
Updating branch refs/heads/master
to 442a52d49581f474629e29b271216f7dbfdb70a1 (commit)
from 73bef27db2fcd11098a943e73cbe2163bf73046d (commit)
commit 442a52d49581f474629e29b271216f7dbfdb70a1
Author: Stephan Arts <stephan at xfce.org>
Date: Fri Apr 27 21:52:47 2012 +0200
Create limit-quality option
src/image_viewer.c | 113 ++++++++++++++++++++++++++++++----------
src/preferences_dialog.c | 131 ++++++++++++++++++++++++++++++++-------------
src/settings.c | 26 +++++++++
src/settings.h | 2 +-
4 files changed, 206 insertions(+), 66 deletions(-)
diff --git a/src/image_viewer.c b/src/image_viewer.c
index 07f72b0..58e66c4 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -81,6 +81,8 @@ struct _RsttoImageViewerPriv
GdkColor *bg_color;
GdkColor *bg_color_fs;
+ gboolean limit_quality;
+
GError *error;
RsttoImageViewerTransaction *transaction;
@@ -254,6 +256,11 @@ rstto_popup_menu (
GtkWidget *widget);
static void
+cb_rstto_limit_quality_changed (
+ GObject *settings,
+ GParamSpec *pspec,
+ gpointer user_data);
+static void
cb_rstto_bgcolor_changed (
GObject *settings,
GParamSpec *pspec,
@@ -350,6 +357,12 @@ rstto_image_viewer_init ( GObject *object )
viewer);
g_signal_connect (
G_OBJECT(viewer->priv->settings),
+ "notify::limit-quality",
+ G_CALLBACK (cb_rstto_limit_quality_changed),
+ viewer);
+
+ g_signal_connect (
+ G_OBJECT(viewer->priv->settings),
"notify::revert-zoom-direction",
G_CALLBACK (cb_rstto_zoom_direction_changed),
viewer);
@@ -475,6 +488,7 @@ rstto_image_viewer_realize(GtkWidget *widget)
GValue val_bg_color = {0, };
GValue val_bg_color_override = {0, };
GValue val_bg_color_fs = {0, };
+ GValue val_limit_quality = {0, };
GdkWindowAttr attributes;
gint attributes_mask;
@@ -487,6 +501,7 @@ rstto_image_viewer_realize(GtkWidget *widget)
g_value_init (&val_bg_color, GDK_TYPE_COLOR);
g_value_init (&val_bg_color_fs, GDK_TYPE_COLOR);
g_value_init (&val_bg_color_override, G_TYPE_BOOLEAN);
+ g_value_init (&val_limit_quality, G_TYPE_BOOLEAN);
attributes.x = widget->allocation.x;
attributes.y = widget->allocation.y;
@@ -519,6 +534,12 @@ rstto_image_viewer_realize(GtkWidget *widget)
G_OBJECT(viewer->priv->settings),
"bgcolor-fullscreen",
&val_bg_color_fs);
+ g_object_get_property (
+ G_OBJECT(viewer->priv->settings),
+ "limit-quality",
+ &val_limit_quality);
+
+ viewer->priv->limit_quality = g_value_get_boolean (&val_limit_quality);
if (TRUE == g_value_get_boolean (&val_bg_color_override))
{
@@ -2080,46 +2101,58 @@ cb_rstto_image_loader_size_prepared (
{
gint s_width = gdk_screen_get_width (default_screen);
gint s_height = gdk_screen_get_height (default_screen);
+ gboolean limit_quality = transaction->viewer->priv->limit_quality;
+
+ /*
+ * By default, the image-size won't be limited to screen-size (since it's smaller)
+ * or, because we don't want to reduce it.
+ * Set the image_scale to 1.0 (100%)
+ */
+ transaction->image_scale = 1.0;
transaction->image_width = width;
transaction->image_height = height;
- /*
- * Set the maximum size of the loaded image to the screen-size.
- * TODO: Add some 'smart-stuff' here
- */
- if (s_width < width || s_height < height)
+
+ if (limit_quality == TRUE)
{
/*
- * The image is loaded at the screen_size, calculate how this fits best.
- * scale = MIN(width / screen_width, height / screen_height)
- *
+ * Set the maximum size of the loaded image to the screen-size.
+ * TODO: Add some 'smart-stuff' here
*/
- if(((gdouble)width / (gdouble)s_width) < ((gdouble)height / (gdouble)s_height))
+ if (s_width < width || s_height < height)
{
- transaction->image_scale = (gdouble)s_width / (gdouble)width;
- gdk_pixbuf_loader_set_size (
- loader,
- s_width,
- (gint)((gdouble)height/(gdouble)width*(gdouble)s_width));
+ /*
+ * The image is loaded at the screen_size, calculate how this fits best.
+ * scale = MIN(width / screen_width, height / screen_height)
+ *
+ */
+ if(((gdouble)width / (gdouble)s_width) < ((gdouble)height / (gdouble)s_height))
+ {
+ transaction->image_scale = (gdouble)s_width / (gdouble)width;
+ gdk_pixbuf_loader_set_size (
+ loader,
+ s_width,
+ (gint)((gdouble)height/(gdouble)width*(gdouble)s_width));
+ }
+ else
+ {
+ transaction->image_scale = (gdouble)s_height / (gdouble)height;
+ gdk_pixbuf_loader_set_size (
+ loader,
+ (gint)((gdouble)width/(gdouble)height*(gdouble)s_height),
+ s_height);
+ }
}
else
{
- transaction->image_scale = (gdouble)s_height / (gdouble)height;
- gdk_pixbuf_loader_set_size (
- loader,
- (gint)((gdouble)width/(gdouble)height*(gdouble)s_height),
- s_height);
+ /*
+ * Image-size won't be limited to screen-size (since it's smaller)
+ * Set the image_scale to 1.0 (100%)
+ */
+ transaction->image_scale = 1.0;
}
}
- else
- {
- /*
- * Image-size won't be limited to screen-size (since it's smaller)
- * Set the image_scale to 1.0 (100%)
- */
- transaction->image_scale = 1.0;
- }
transaction->orientation = rstto_file_get_orientation (transaction->file);
}
@@ -2742,6 +2775,32 @@ rstto_button_release_event (
}
static void
+cb_rstto_limit_quality_changed (
+ GObject *settings,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (user_data);
+
+ GValue val_limit_quality = {0, };
+
+ g_value_init (&val_limit_quality, G_TYPE_BOOLEAN);
+
+ g_object_get_property (
+ G_OBJECT(viewer->priv->settings),
+ "limit-quality",
+ &val_limit_quality);
+
+ viewer->priv->limit_quality = g_value_get_boolean (
+ &val_limit_quality);
+
+ rstto_image_viewer_load_image (
+ viewer,
+ viewer->priv->file,
+ viewer->priv->scale);
+}
+
+static void
cb_rstto_bgcolor_changed (
GObject *settings,
GParamSpec *pspec,
diff --git a/src/preferences_dialog.c b/src/preferences_dialog.c
index 4afd61a..e625df1 100644
--- a/src/preferences_dialog.c
+++ b/src/preferences_dialog.c
@@ -61,6 +61,10 @@ cb_show_clock_check_button_toggled (
GtkToggleButton *button,
gpointer user_data);
static void
+cb_limit_quality_check_button_toggled (
+ GtkToggleButton *button,
+ gpointer user_data);
+static void
cb_wrap_images_check_button_toggled (
GtkToggleButton *button,
gpointer user_data);
@@ -88,22 +92,32 @@ struct _RsttoPreferencesDialogPriv
GtkWidget *bgcolor_hbox;
GtkWidget *bgcolor_color_button;
GtkWidget *bgcolor_override_check_button;
- GtkWidget *thumbnail_vbox;
- GtkWidget *thumbnail_frame;
- GtkWidget *hide_thumbnails_fullscreen_lbl;
- GtkWidget *hide_thumbnails_fullscreen_check_button;
+
+ GtkWidget *quality_frame;
+ GtkWidget *quality_vbox;
+
+ GtkWidget *quality_label;
+ GtkWidget *quality_button;
} display_tab;
struct
{
GtkWidget *timeout_vbox;
GtkWidget *timeout_frame;
+ } slideshow_tab;
+
+ struct
+ {
+ GtkWidget *thumbnail_vbox;
+ GtkWidget *thumbnail_frame;
+ GtkWidget *hide_thumbnails_fullscreen_lbl;
+ GtkWidget *hide_thumbnails_fullscreen_check_button;
GtkWidget *clock_vbox;
GtkWidget *clock_frame;
GtkWidget *clock_label;
GtkWidget *clock_button;
- } slideshow_tab;
+ } fullscreen_tab;
struct
{
@@ -163,12 +177,15 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
gboolean bool_wrap_images;
gboolean bool_maximize_on_startup;
gboolean bool_show_clock;
+ gboolean bool_limit_quality;
gchar *str_desktop_type = NULL;
GdkColor *bgcolor;
GtkWidget *timeout_lbl, *timeout_hscale;
GtkWidget *display_main_vbox;
GtkWidget *display_main_lbl;
+ GtkWidget *fullscreen_main_vbox;
+ GtkWidget *fullscreen_main_lbl;
GtkWidget *slideshow_main_vbox;
GtkWidget *slideshow_main_lbl;
GtkWidget *control_main_vbox;
@@ -192,6 +209,7 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
"wrap-images", &bool_wrap_images,
"desktop-type", &str_desktop_type,
"show-clock", &bool_show_clock,
+ "limit-quality", &bool_limit_quality,
NULL);
/*****************/
@@ -218,25 +236,6 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.bgcolor_vbox),
dialog->priv->display_tab.bgcolor_hbox, FALSE, FALSE, 0);
- dialog->priv->display_tab.thumbnail_vbox = gtk_vbox_new(FALSE, 0);
- dialog->priv->display_tab.thumbnail_frame = xfce_gtk_frame_box_new_with_content(_("Thumbnails"), dialog->priv->display_tab.thumbnail_vbox);
- gtk_box_pack_start (GTK_BOX (display_main_vbox), dialog->priv->display_tab.thumbnail_frame, FALSE, FALSE, 0);
-
- dialog->priv->display_tab.hide_thumbnails_fullscreen_lbl = gtk_label_new(_("The thumbnail bar can be automatically hidden when the window is fullscreen."));
- gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->display_tab.hide_thumbnails_fullscreen_lbl), TRUE);
- gtk_misc_set_alignment(GTK_MISC(dialog->priv->display_tab.hide_thumbnails_fullscreen_lbl), 0, 0.5);
- dialog->priv->display_tab.hide_thumbnails_fullscreen_check_button = gtk_check_button_new_with_label (_("Hide thumbnail bar when fullscreen"));
- gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.thumbnail_vbox), dialog->priv->display_tab.hide_thumbnails_fullscreen_lbl, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (dialog->priv->display_tab.thumbnail_vbox), dialog->priv->display_tab.hide_thumbnails_fullscreen_check_button, FALSE, FALSE, 0);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->display_tab.hide_thumbnails_fullscreen_check_button),
- bool_hide_thumbnailbar_fullscreen);
-
- g_signal_connect (G_OBJECT (dialog->priv->display_tab.hide_thumbnails_fullscreen_check_button),
- "toggled", (GCallback)cb_rstto_preferences_dialog_hide_thumbnails_fullscreen_check_button_toggled, dialog);
-
-
-
/* set current value */
gtk_color_button_set_color (GTK_COLOR_BUTTON (dialog->priv->display_tab.bgcolor_color_button),
bgcolor);
@@ -252,6 +251,63 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
g_signal_connect (G_OBJECT (dialog->priv->display_tab.bgcolor_color_button),
"color-set", G_CALLBACK (cb_rstto_preferences_dialog_bgcolor_color_set), dialog);
+ dialog->priv->display_tab.quality_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->display_tab.quality_frame = xfce_gtk_frame_box_new_with_content(_("Quality"), dialog->priv->display_tab.quality_vbox);
+ gtk_box_pack_start (GTK_BOX (display_main_vbox), dialog->priv->display_tab.quality_frame, FALSE, FALSE, 0);
+
+ dialog->priv->display_tab.quality_label = gtk_label_new (
+ _("With this option enabled, the visible image-quality will be limited to the screen-size."));
+ gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->display_tab.quality_label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(dialog->priv->display_tab.quality_label), 0, 0.5);
+ dialog->priv->display_tab.quality_button = gtk_check_button_new_with_label (_("Limit rendering quality"));
+ gtk_container_add (GTK_CONTAINER (dialog->priv->display_tab.quality_vbox), dialog->priv->display_tab.quality_label);
+ gtk_container_add (GTK_CONTAINER (dialog->priv->display_tab.quality_vbox), dialog->priv->display_tab.quality_button);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->display_tab.quality_button), bool_limit_quality);
+
+ g_signal_connect (G_OBJECT (dialog->priv->display_tab.quality_button),
+ "toggled", (GCallback)cb_limit_quality_check_button_toggled, dialog);
+
+/********************/
+/** Fullscreen tab **/
+/********************/
+ fullscreen_main_vbox = gtk_vbox_new(FALSE, 0);
+ fullscreen_main_lbl = gtk_label_new(_("Fullscreen"));
+ gtk_notebook_append_page(GTK_NOTEBOOK(notebook), fullscreen_main_vbox, fullscreen_main_lbl);
+
+
+ dialog->priv->fullscreen_tab.thumbnail_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->fullscreen_tab.thumbnail_frame = xfce_gtk_frame_box_new_with_content(_("Thumbnails"), dialog->priv->fullscreen_tab.thumbnail_vbox);
+ gtk_box_pack_start (GTK_BOX (fullscreen_main_vbox), dialog->priv->fullscreen_tab.thumbnail_frame, FALSE, FALSE, 0);
+
+ dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl = gtk_label_new(_("The thumbnail bar can be automatically hidden when the window is fullscreen."));
+ gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl), 0, 0.5);
+ dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button = gtk_check_button_new_with_label (_("Hide thumbnail bar when fullscreen"));
+ gtk_box_pack_start (GTK_BOX (dialog->priv->fullscreen_tab.thumbnail_vbox), dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_lbl, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (dialog->priv->fullscreen_tab.thumbnail_vbox), dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button, FALSE, FALSE, 0);
+
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button),
+ bool_hide_thumbnailbar_fullscreen);
+
+ dialog->priv->fullscreen_tab.clock_vbox = gtk_vbox_new(FALSE, 0);
+ dialog->priv->fullscreen_tab.clock_frame = xfce_gtk_frame_box_new_with_content(_("Clock"), dialog->priv->fullscreen_tab.clock_vbox);
+ gtk_box_pack_start (GTK_BOX (fullscreen_main_vbox), dialog->priv->fullscreen_tab.clock_frame, FALSE, FALSE, 0);
+
+ dialog->priv->fullscreen_tab.clock_label = gtk_label_new ( _("Show an analog clock that displays the current time when the window is fullscreen"));
+ gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->fullscreen_tab.clock_label), TRUE);
+ gtk_misc_set_alignment(GTK_MISC(dialog->priv->fullscreen_tab.clock_label), 0, 0.5);
+ dialog->priv->fullscreen_tab.clock_button = gtk_check_button_new_with_label (_("Show Fullscreen Clock"));
+ gtk_container_add (GTK_CONTAINER (dialog->priv->fullscreen_tab.clock_vbox), dialog->priv->fullscreen_tab.clock_label);
+ gtk_container_add (GTK_CONTAINER (dialog->priv->fullscreen_tab.clock_vbox), dialog->priv->fullscreen_tab.clock_button);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->fullscreen_tab.clock_button), bool_show_clock);
+
+
+ g_signal_connect (G_OBJECT (dialog->priv->fullscreen_tab.hide_thumbnails_fullscreen_check_button),
+ "toggled", (GCallback)cb_rstto_preferences_dialog_hide_thumbnails_fullscreen_check_button_toggled, dialog);
+
+
+ g_signal_connect (G_OBJECT (dialog->priv->fullscreen_tab.clock_button),
+ "toggled", (GCallback)cb_show_clock_check_button_toggled, dialog);
/*******************/
/** Slideshow tab **/
/*******************/
@@ -271,24 +327,10 @@ rstto_preferences_dialog_init(RsttoPreferencesDialog *dialog)
gtk_box_pack_start(GTK_BOX(dialog->priv->slideshow_tab.timeout_vbox), timeout_lbl, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(dialog->priv->slideshow_tab.timeout_vbox), timeout_hscale, FALSE, TRUE, 0);
- dialog->priv->slideshow_tab.clock_vbox = gtk_vbox_new(FALSE, 0);
- dialog->priv->slideshow_tab.clock_frame = xfce_gtk_frame_box_new_with_content(_("Clock"), dialog->priv->slideshow_tab.clock_vbox);
- gtk_box_pack_start (GTK_BOX (slideshow_main_vbox), dialog->priv->slideshow_tab.clock_frame, FALSE, FALSE, 0);
-
- dialog->priv->slideshow_tab.clock_label = gtk_label_new ( _("Show an analog clock that displays the current time when the window is fullscreen"));
- gtk_label_set_line_wrap (GTK_LABEL (dialog->priv->slideshow_tab.clock_label), TRUE);
- gtk_misc_set_alignment(GTK_MISC(dialog->priv->slideshow_tab.clock_label), 0, 0.5);
- dialog->priv->slideshow_tab.clock_button = gtk_check_button_new_with_label (_("Show Fullscreen Clock"));
- gtk_container_add (GTK_CONTAINER (dialog->priv->slideshow_tab.clock_vbox), dialog->priv->slideshow_tab.clock_label);
- gtk_container_add (GTK_CONTAINER (dialog->priv->slideshow_tab.clock_vbox), dialog->priv->slideshow_tab.clock_button);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (dialog->priv->slideshow_tab.clock_button), bool_show_clock);
-
gtk_range_set_value (GTK_RANGE (timeout_hscale), (gdouble)uint_slideshow_timeout);
g_signal_connect (G_OBJECT (timeout_hscale),
"value-changed", (GCallback)cb_rstto_preferences_dialog_slideshow_timeout_value_changed, dialog);
- g_signal_connect (G_OBJECT (dialog->priv->slideshow_tab.clock_button),
- "toggled", (GCallback)cb_show_clock_check_button_toggled, dialog);
/********************************************/
@@ -576,6 +618,19 @@ cb_show_clock_check_button_toggled (
}
static void
+cb_limit_quality_check_button_toggled (
+ GtkToggleButton *button,
+ gpointer user_data)
+{
+ RsttoPreferencesDialog *dialog = RSTTO_PREFERENCES_DIALOG (user_data);
+
+ rstto_settings_set_boolean_property (
+ dialog->priv->settings,
+ "limit-quality",
+ gtk_toggle_button_get_active(button));
+}
+
+static void
cb_choose_desktop_combo_box_changed (
GtkComboBox *combo_box,
gpointer user_data)
diff --git a/src/settings.c b/src/settings.c
index 8915297..f6853b7 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -61,6 +61,7 @@ enum
PROP_SHOW_THUMBNAILBAR,
PROP_SHOW_STATUSBAR,
PROP_SHOW_CLOCK,
+ PROP_LIMIT_QUALITY,
PROP_HIDE_THUMBNAILBAR_FULLSCREEN,
PROP_WINDOW_WIDTH,
PROP_WINDOW_HEIGHT,
@@ -113,6 +114,7 @@ struct _RsttoSettingsPriv
gboolean show_thumbnailbar;
gboolean show_statusbar;
gboolean show_clock;
+ gboolean limit_quality;
gboolean hide_thumbnailbar_fullscreen;
gchar *navigationbar_position;
gboolean revert_zoom_direction;
@@ -305,6 +307,13 @@ rstto_settings_init (GObject *object)
xfconf_g_property_bind (
settings->priv->channel,
+ "/image/limit-quality",
+ G_TYPE_BOOLEAN,
+ settings,
+ "limit-quality");
+
+ xfconf_g_property_bind (
+ settings->priv->channel,
"/window/use-thunar-properties",
G_TYPE_BOOLEAN,
settings,
@@ -420,6 +429,17 @@ rstto_settings_class_init (GObjectClass *object_class)
pspec);
pspec = g_param_spec_boolean (
+ "limit-quality",
+ "",
+ "",
+ TRUE,
+ G_PARAM_READWRITE);
+ g_object_class_install_property (
+ object_class,
+ PROP_LIMIT_QUALITY,
+ pspec);
+
+ pspec = g_param_spec_boolean (
"hide-thumbnailbar-fullscreen",
"",
"",
@@ -683,6 +703,9 @@ rstto_settings_set_property (GObject *object,
case PROP_SHOW_CLOCK:
settings->priv->show_clock = g_value_get_boolean (value);
break;
+ case PROP_LIMIT_QUALITY:
+ settings->priv->limit_quality = g_value_get_boolean (value);
+ break;
case PROP_HIDE_THUMBNAILBAR_FULLSCREEN:
settings->priv->hide_thumbnailbar_fullscreen = g_value_get_boolean (value);
break;
@@ -782,6 +805,9 @@ rstto_settings_get_property (GObject *object,
case PROP_SHOW_CLOCK:
g_value_set_boolean (value, settings->priv->show_clock);
break;
+ case PROP_LIMIT_QUALITY:
+ g_value_set_boolean (value, settings->priv->limit_quality);
+ break;
case PROP_HIDE_THUMBNAILBAR_FULLSCREEN:
g_value_set_boolean (value, settings->priv->hide_thumbnailbar_fullscreen);
break;
diff --git a/src/settings.h b/src/settings.h
index df3ffe6..661c312 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -69,7 +69,7 @@ guint rstto_settings_get_navbar_position (RsttoSettings *);
void rstto_settings_set_uint_property (RsttoSettings *, const gchar *, guint);
guint rstto_settings_get_uint_property (RsttoSettings *, const gchar *);
void rstto_settings_set_int_property (RsttoSettings *, const gchar *, gint);
-gint rstto_settings_get_int_property (RsttoSettings *, const gchar *);
+gint rstto_settings_get_int_property (RsttoSettings *, const gchar *);
void rstto_settings_set_string_property (RsttoSettings *, const gchar *, const gchar *);
gchar *rstto_settings_get_string_property (RsttoSettings *, const gchar *);
void rstto_settings_set_boolean_property (RsttoSettings *, const gchar *, gboolean);
More information about the Xfce4-commits
mailing list