[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