Enlightenment CVS committal

Author  : metrics
Project : e17
Module  : apps/e

Dir     : e17/apps/e/src/modules/ibar


Modified Files:
        e_mod_main.c 


Log Message:
Allow dropping of icons from borders that don't have a corresponding
.desktop file.

===================================================================
RCS file: /cvs/e/e17/apps/e/src/modules/ibar/e_mod_main.c,v
retrieving revision 1.159
retrieving revision 1.160
diff -u -3 -r1.159 -r1.160
--- e_mod_main.c        18 Nov 2006 04:56:12 -0000      1.159
+++ e_mod_main.c        2 Dec 2006 10:15:32 -0000       1.160
@@ -1239,21 +1239,50 @@
          }
        if (!app)
          {
-            E_Dialog *dia;
+            char *bname = NULL, *bclass = NULL;
+            char path[4096];
+            const char *homedir;
+            
+            homedir = e_user_homedir_get();
 
-            dia = 
e_dialog_new(e_container_current_get(e_manager_current_get()), "E", 
"_e_mod_ibar_error_icon_add_dialog");
-            e_dialog_title_set(dia, _("Cannot add icon"));
-            e_dialog_text_set(dia,
-                              _("You tried to drop an icon of an application 
that<br>"
-                                "does not have a matching application 
file.<br>"
-                                "<br>"
-                                "The icon cannot be added to IBar."
-                                ));
-            e_dialog_button_add(dia, _("OK"), NULL, NULL, NULL);
-            e_dialog_button_focus_num(dia, 1);
-            e_win_centered_set(dia->win, 1);
-            e_dialog_show(dia);
-            goto clean;
+            /* Create a new application icon */
+            bname = bd->client.icccm.name;
+            if ((bname) && (bname[0] == 0)) bname = NULL;
+            bclass = bd->client.icccm.class;
+            if ((bclass) && (bclass[0] == 0)) bclass = NULL;
+
+            if (bname) 
+              {
+                 snprintf(path, sizeof(path), 
"%s/.e/e/applications/all/%s.desktop", homedir, bname);
+                 app = e_app_empty_new(path);
+              }
+
+            if (app)
+              {             
+                 if (bd->client.netwm.icons)
+                   {
+                      char icon_path[4096];
+
+                      snprintf(icon_path, sizeof(icon_path), 
"%s/.e/e/icons/%s-%.6f.png", homedir, bname, ecore_time_get());
+                      if (e_util_icon_save(&(bd->client.netwm.icons[0]), 
icon_path))
+                        {
+                           app->icon_path = evas_stringshare_add(icon_path);
+                           app->width = bd->client.netwm.icons[0].width;
+                           app->height = bd->client.netwm.icons[0].height;
+                        }
+                   }
+                 if (bname) app->win_name = evas_stringshare_add(bname);
+                 if (bclass) app->win_class = evas_stringshare_add(bclass);
+                 if (bd->client.icccm.window_role)
+                   app->win_role = 
evas_stringshare_add(bd->client.icccm.window_role);
+                 if (bclass) app->name = evas_stringshare_add(bclass);
+                 if (bname) app->exe = evas_stringshare_add(bname);
+                 if (bd->client.netwm.startup_id > 0)
+                   app->startup_notify = 1;
+
+                 e_app_fields_save(app);
+                 
e_eap_edit_show(e_container_current_get(e_manager_current_get()), app);
+              }
          }
      }
    else if (!strcmp(type, "text/uri-list"))



-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to