From: "Rodolfo García Peñas (kix)" <k...@kix.es>

The function wApplicationCreate() calls makeAppIconFor() to create
and save the appicon. All stuff appicon related is in appicon.c,
inside the function makeAppIconFor().

To do it, the function makeAppIconFor() must include the WApplication
and the WWindow structs.

This patch moves the code from wApplicationCreate() to makeAppIconFor()
and include the new WWindow argument at makeAppIconFor().
---
 src/appicon.c     |   13 ++++++++++---
 src/appicon.h     |    3 +--
 src/application.c |   15 +++------------
 3 files changed, 14 insertions(+), 17 deletions(-)

diff --git a/src/appicon.c b/src/appicon.c
index 902559c..9f416ad 100644
--- a/src/appicon.c
+++ b/src/appicon.c
@@ -71,6 +71,7 @@ static void wApplicationSaveIconPathFor(char *iconPath, char 
*wm_instance, char
 static WAppIcon *wAppIconCreate(WWindow * leader_win);
 static void add_to_appicon_list(WScreen *scr, WAppIcon *appicon);
 static void remove_from_appicon_list(WScreen *scr, WAppIcon *appicon);
+static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window 
main_window);
 
 /* This function is used if the application is a .app. It checks if it has an 
icon in it
  * like for example /usr/local/GNUstep/Applications/WPrefs.app/WPrefs.tiff
@@ -143,19 +144,25 @@ WAppIcon *wAppIconCreateForDock(WScreen *scr, char 
*command, char *wm_instance,
        return aicon;
 }
 
-void makeAppIconFor(WApplication *wapp)
+void makeAppIconFor(WApplication *wapp, WWindow *wwin)
 {
+       /* First try to create an icon from the dock or clip */
+       create_appicon_from_dock(wwin, wapp, wapp->main_window);
+
        /* If app_icon, work is done, return */
        if (wapp->app_icon)
                return;
 
-       /* Create the icon */
+       /* In case it was not found in the dock, make it from scratch. */
        wapp->app_icon = wAppIconCreate(wapp->main_window_desc);
        wIconUpdate(wapp->app_icon->icon, NULL);
 
        /* Now, paint the icon */
        if (!WFLAGP(wapp->main_window_desc, no_appicon))
                paint_app_icon(wapp);
+
+       /* Save the app_icon in a file */
+       save_appicon(wapp->app_icon, False);
 }
 
 void unpaint_app_icon(WApplication *wapp)
@@ -957,7 +964,7 @@ static WAppIcon *findDockIconFor(WDock *dock, Window 
main_window)
        return aicon;
 }
 
-void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window 
main_window)
+static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window 
main_window)
 {
        WScreen *scr = wwin->screen_ptr;
        wapp->app_icon = NULL;
diff --git a/src/appicon.h b/src/appicon.h
index 6f72c8e..c00a538 100644
--- a/src/appicon.h
+++ b/src/appicon.h
@@ -72,11 +72,10 @@ typedef struct WAppIcon {
 WAppIcon *wAppIconCreateForDock(WScreen *scr, char *command, char *wm_instance,
                                char *wm_class, int tile);
 
-void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window 
main_window);
 void wAppIconDestroy(WAppIcon *aicon);
 void wAppIconPaint(WAppIcon *aicon);
 void wAppIconMove(WAppIcon *aicon, int x, int y);
-void makeAppIconFor(WApplication * wapp);
+void makeAppIconFor(WApplication *wapp, WWindow *wwin);
 void removeAppIconFor(WApplication * wapp);
 void save_appicon(WAppIcon *aicon, Bool dock);
 void paint_app_icon(WApplication *wapp);
diff --git a/src/application.c b/src/application.c
index b52a35f..0860e7a 100644
--- a/src/application.c
+++ b/src/application.c
@@ -77,7 +77,7 @@ WApplication *wApplicationOf(Window window)
        return wapp;
 }
 
-WApplication *wApplicationCreate(WWindow * wwin)
+WApplication *wApplicationCreate(WWindow *wwin)
 {
        WScreen *scr = wwin->screen_ptr;
        Window main_window = wwin->main_window;
@@ -141,17 +141,8 @@ WApplication *wApplicationCreate(WWindow * wwin)
        /* application descriptor */
        XSaveContext(dpy, main_window, wAppWinContext, (XPointer) wapp);
 
-       /* First try to create an icon from the dock or clip */
-       create_appicon_from_dock(wwin, wapp, main_window);
-
-       /*
-        * In case it was not found in the dock, make it from scratch.
-        * Note: makeAppIconFor() returns early if wapp->app_icon exists
-        */
-       makeAppIconFor(wapp);
-
-       /* Save the app_icon in a file */
-       save_appicon(wapp->app_icon, False);
+       /* Create and save the application icon */
+       makeAppIconFor(wapp, wwin);
 
        return wapp;
 }
-- 
1.7.10.4


-- 
To unsubscribe, send mail to wmaker-dev-unsubscr...@lists.windowmaker.org.

Reply via email to