all repos — openbox @ 78a8f407a94d16b96a54e32a4c9782a765ad40fe

openbox fork - make it a bit more like ryudo

parse Categories tag and save them as an array of GQuarks
Dana Jansens danakj@orodu.net
commit

78a8f407a94d16b96a54e32a4c9782a765ad40fe

parent

a6141fe7a4895593d412a18bd24d1859d2d69c34

1 files changed, 33 insertions(+), 1 deletions(-)

jump to
M obt/link.cobt/link.c

@@ -49,6 +49,9 @@ /* XXX gchar**? or something better, a mime struct.. maybe

glib has something i can use. */ gchar **mime; /*!< Mime types the app can open */ + GQuark *categories; /*!< Array of quarks representing the + application's categories */ + ObtLinkAppStartup startup; gchar *startup_wmclass; } app;

@@ -164,7 +167,21 @@ v->value.string = NULL;

} } - /* XXX there's more app specific stuff */ + if ((v = g_hash_table_lookup(keys, "Categories"))) { + gulong i; + gchar *end; + + link->d.app.categories = g_new(GQuark, v->value.strings.n); + + c = end = v->value.strings.s; + for (i = 0; i < v->value.strings.n; ++i) { + while (*end) ++end; + link->d.app.categories[i] = g_quark_from_string(c); + c = end = end+1; /* next */ + } + } + + /* XXX do something with mime types */ } else if (link->type == OBT_LINK_TYPE_URL) { v = g_hash_table_lookup(keys, "URL");

@@ -173,6 +190,9 @@ link->d.url.addr = v->value.string;

v->value.string = NULL; } + /* destroy the parsing info */ + g_hash_table_destroy(groups); + return link; }

@@ -184,6 +204,18 @@

void obt_link_unref(ObtLink *dd) { if (--dd->ref < 1) { + g_free(dd->name); + g_free(dd->generic); + g_free(dd->comment); + g_free(dd->icon); + if (dd->type == OBT_LINK_TYPE_APPLICATION) { + g_free(dd->d.app.exec); + g_free(dd->d.app.wdir); + g_free(dd->d.app.categories); + g_free(dd->d.app.startup_wmclass); + } + else if (dd->type == OBT_LINK_TYPE_URL) + g_free(dd->d.url.addr); g_slice_free(ObtLink, dd); } }