fix a small memory leak in case user cancels the selection after new items appeared...
[simple-launcher] / simple-launcher.cc
index 93de8fb..355c181 100644 (file)
@@ -274,15 +274,12 @@ void SimpleLauncherApplet::updateWidget() {
     }
   }
 
-  if (button_no) {
-    gtk_container_add(GTK_CONTAINER(myWidget), GTK_WIDGET(toolbar));
-    if (button_no == 0) {
-      gtk_widget_set_size_request(myWidget, SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE, SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE);
-    } else {
-      gtk_widget_set_size_request(myWidget, button_no*(SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE), SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE);
-    }
+  gtk_container_add(GTK_CONTAINER(myWidget), GTK_WIDGET(toolbar));
+
+  if (button_no == 0) {
+    gtk_widget_set_size_request(myWidget, SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE, SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE);
   } else {
-    gtk_widget_destroy(GTK_WIDGET(toolbar));
+    gtk_widget_set_size_request(myWidget, button_no*(SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE), SL_APPLET_ICON_SIZE+SL_APPLET_CANVAS_SIZE);
   }
 
   gtk_widget_show_all(myWidget);
@@ -329,9 +326,11 @@ void SimpleLauncherApplet::_run_dialog(GtkMenuItem *, void *self) {
 }
 
 void SimpleLauncherApplet::runDialog() {
-  LauncherItems newItems = myItems;
+  // We update the items before using them to avoid a small memory leak
+  // FIXME: deal with the situation in a better way (figure it out first :))
+  updateItems(myItems);       // User requested 'settings', let's give her the latest stuff :)
 
-  updateItems(newItems);  // User requested 'settings', let's give her the latest stuff :)
+  LauncherItems newItems = myItems;
 
   SLAList list(SL_APPLET_ICON_SIZE, newItems);