[Goodies-commits] r5637 - in xfce4-screenshooter-plugin/trunk: . src
Jerome Guelfucci
jeromeg at xfce.org
Wed Oct 15 19:47:29 CEST 2008
Author: jeromeg
Date: 2008-10-15 17:47:29 +0000 (Wed, 15 Oct 2008)
New Revision: 5637
Modified:
xfce4-screenshooter-plugin/trunk/ChangeLog
xfce4-screenshooter-plugin/trunk/src/main.c
xfce4-screenshooter-plugin/trunk/src/screenshooter-dialogs.c
xfce4-screenshooter-plugin/trunk/src/screenshooter-utils.c
Log:
Plug a leak, improve the main dialog.
Modified: xfce4-screenshooter-plugin/trunk/ChangeLog
===================================================================
--- xfce4-screenshooter-plugin/trunk/ChangeLog 2008-10-15 15:31:05 UTC (rev 5636)
+++ xfce4-screenshooter-plugin/trunk/ChangeLog 2008-10-15 17:47:29 UTC (rev 5637)
@@ -1,3 +1,12 @@
+2008-10-15 jeromeg
+
+ * src/main.c: destroy the dialog before taking the screenshot of the active
+ window, we don't want to get a screenshot of the dialog...
+ * src/screenshooter-dialogs.c: don't show the save options and the default
+ folder chooser for the main application.
+ * src/screenshooter-utils.c: don't leak GdkWindows when falling back to
+ fullscreen.
+
2008-10-12 jeromeg
* src/screenshooter-dialogs.{c,h}
Modified: xfce4-screenshooter-plugin/trunk/src/main.c
===================================================================
--- xfce4-screenshooter-plugin/trunk/src/main.c 2008-10-15 15:31:05 UTC (rev 5636)
+++ xfce4-screenshooter-plugin/trunk/src/main.c 2008-10-15 17:47:29 UTC (rev 5637)
@@ -201,6 +201,8 @@
response = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+
if (response == GTK_RESPONSE_OK)
{
screenshot = take_screenshot (sd->mode, sd->delay);
@@ -208,8 +210,6 @@
sd->screenshot_dir);
g_object_unref (screenshot);
}
-
- gtk_widget_destroy (dialog);
}
g_free (sd->screenshot_dir);
Modified: xfce4-screenshooter-plugin/trunk/src/screenshooter-dialogs.c
===================================================================
--- xfce4-screenshooter-plugin/trunk/src/screenshooter-dialogs.c 2008-10-15 15:31:05 UTC (rev 5636)
+++ xfce4-screenshooter-plugin/trunk/src/screenshooter-dialogs.c 2008-10-15 17:47:29 UTC (rev 5637)
@@ -182,37 +182,47 @@
gtk_container_set_border_width (GTK_CONTAINER (options_box), 6);
gtk_widget_show (options_box);
- /* Save option */
- save_button = gtk_check_button_new_with_mnemonic (_("Show save dialog"));
- gtk_widget_show (save_button);
- gtk_box_pack_start (GTK_BOX (options_box), save_button, FALSE, FALSE, 0);
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_button),
- sd->show_save_dialog);
- g_signal_connect (save_button, "toggled",
- G_CALLBACK (cb_show_save_dialog_toggled), sd);
+
+ if (plugin)
+ {
+ /* Save option */
+ save_button = gtk_check_button_new_with_mnemonic (_("Show save dialog"));
+ gtk_widget_show (save_button);
+ gtk_box_pack_start (GTK_BOX (options_box), save_button, FALSE, FALSE, 0);
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (save_button),
+ sd->show_save_dialog);
+ g_signal_connect (save_button, "toggled",
+ G_CALLBACK (cb_show_save_dialog_toggled), sd);
+ }
- /* Default save location */
- default_save_label = gtk_label_new ( "" );
- gtk_label_set_markup (GTK_LABEL (default_save_label),
- _("<span weight=\"bold\" stretch=\"semiexpanded\">Default save location</span>"));
- gtk_misc_set_alignment (GTK_MISC (default_save_label), 0, 0);
- gtk_widget_show (default_save_label);
- gtk_container_add (GTK_CONTAINER (options_box), default_save_label);
-
- dir_chooser =
- gtk_file_chooser_button_new (_("Default save location"),
- GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
- gtk_widget_show (dir_chooser);
- gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dir_chooser),
- sd->screenshot_dir);
- gtk_container_add (GTK_CONTAINER (options_box), dir_chooser);
- g_signal_connect (dir_chooser, "selection-changed",
- G_CALLBACK (cb_default_folder), sd);
+ if (plugin)
+ {
+ /* Default save location */
+ default_save_label = gtk_label_new ( "" );
+ gtk_label_set_markup (GTK_LABEL (default_save_label),
+ _("<span weight=\"bold\" stretch=\"semiexpanded\">Default save location</span>"));
+
+ gtk_misc_set_alignment (GTK_MISC (default_save_label), 0, 0);
+ gtk_widget_show (default_save_label);
+ gtk_container_add (GTK_CONTAINER (options_box), default_save_label);
+
+ dir_chooser =
+ gtk_file_chooser_button_new (_("Default save location"),
+ GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER);
+ gtk_widget_show (dir_chooser);
+ gtk_file_chooser_set_current_folder (GTK_FILE_CHOOSER (dir_chooser),
+ sd->screenshot_dir);
+ gtk_container_add (GTK_CONTAINER (options_box), dir_chooser);
+ g_signal_connect (dir_chooser, "selection-changed",
+ G_CALLBACK (cb_default_folder), sd);
+ }
/* Screenshot delay */
delay_label = gtk_label_new ( "" );
+
gtk_label_set_markup (GTK_LABEL(delay_label),
- _("<span weight=\"bold\" stretch=\"semiexpanded\">Delay before taking the screenshot</span>"));
+ _("<span weight=\"bold\" stretch=\"semiexpanded\">Delay before taking the screenshot</span>"));
+
gtk_misc_set_alignment(GTK_MISC (delay_label), 0, 0);
gtk_widget_show (delay_label);
gtk_container_add (GTK_CONTAINER (options_box), delay_label);
Modified: xfce4-screenshooter-plugin/trunk/src/screenshooter-utils.c
===================================================================
--- xfce4-screenshooter-plugin/trunk/src/screenshooter-utils.c 2008-10-15 15:31:05 UTC (rev 5636)
+++ xfce4-screenshooter-plugin/trunk/src/screenshooter-utils.c 2008-10-15 17:47:29 UTC (rev 5637)
@@ -153,16 +153,28 @@
/* If we are supposed to take a screenshot of the active window, and if
the active window is the desktop background, grab the whole screen.*/
- if (gdk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_DESKTOP ||
- window == NULL)
+ if (window == NULL ||
+ gdk_window_get_type_hint (window) == GDK_WINDOW_TYPE_HINT_DESKTOP)
{
+ if (!(window == NULL))
+ {
+ g_object_unref (window);
+ }
+
window = gdk_get_default_root_window ();
needs_unref = FALSE;
}
else
{
- window =
- gdk_window_foreign_new (find_toplevel_window (GDK_WINDOW_XID (window)));
+ GdkWindow *window2;
+
+ window2 =
+ gdk_window_foreign_new (find_toplevel_window
+ (GDK_WINDOW_XID (window)));
+
+ g_object_unref (window);
+
+ window = window2;
}
}
More information about the Goodies-commits
mailing list