From 101f4acaed92597e7214ac52cb5515a852029f50 Mon Sep 17 00:00:00 2001 From: skeezix Date: Wed, 9 Nov 2011 15:15:19 -0500 Subject: [PATCH] mmenu; actually handle remembering app when in a pnd subcat virtual folder --- minimenu/mmconf.c | 4 ++++ minimenu/mmui.c | 28 ++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/minimenu/mmconf.c b/minimenu/mmconf.c index 2535a06..dc75de8 100644 --- a/minimenu/mmconf.c +++ b/minimenu/mmconf.c @@ -698,12 +698,16 @@ unsigned char conf_write ( pnd_conf_handle h, char *fullpath ) { // make for big dumps erroneously.. hmm :/ char *previous_unique_id = pnd_conf_get_as_char ( g_conf, "minimenu.last_known_app_uid" ); char *lastcat = pnd_conf_get_as_char ( g_conf, "minimenu.last_known_catname" ); + char *lastparentcat = pnd_conf_get_as_char ( g_conf, "minimenu.last_known_parentcatname" ); if ( previous_unique_id ) { fprintf ( f, "%s\t%s\n", "minimenu.last_known_app_uid", previous_unique_id ); } if ( lastcat ) { fprintf ( f, "%s\t%s\n", "minimenu.last_known_catname", lastcat ); } + if ( lastparentcat ) { + fprintf ( f, "%s\t%s\n", "minimenu.last_known_parentcatname", lastparentcat ); + } fclose ( f ); diff --git a/minimenu/mmui.c b/minimenu/mmui.c index e7e8fe1..052c5e7 100644 --- a/minimenu/mmui.c +++ b/minimenu/mmui.c @@ -1827,6 +1827,17 @@ void ui_push_exec ( void ) { } if ( g_categories [ 0 ] ) { pnd_conf_set_char ( g_conf, "minimenu.last_known_catname", g_categories [ ui_category ] -> catname ); + + // and also the parent cat.. + if ( g_categories [ ui_category ] -> parent_catname ) { + pnd_conf_set_char ( g_conf, "minimenu.last_known_parentcatname", g_categories [ ui_category ] -> parent_catname ); + } else { + char *kv = pnd_box_find_by_key ( g_conf, "minimenu.last_known_parentcatname" ); + if ( kv ) { + pnd_box_delete_node ( g_conf, kv ); + } + + } } // cache last known cat/app to /tmp, so we can use it again later @@ -2785,6 +2796,23 @@ void ui_post_scan ( void ) { if ( pnd_conf_get_as_int_d ( g_conf, "minimenu.start_selected", 0 ) && lastcat ) { catpick = lastcat; + + // if this is a subcat, we have some doctoring to do :/ the hackishness is really + // starting to show.. + if ( pnd_conf_get_as_char ( g_conf, "minimenu.last_known_parentcatname" ) ) { + // in subcat view, we only have one cat + ui_category = 0; + ui_catshift = 0; + // the cat name to search for is Child*Parent + char key [ 512 ]; + sprintf ( key, "%s*%s", + pnd_conf_get_as_char ( g_conf, "minimenu.last_known_catname" ) + , pnd_conf_get_as_char ( g_conf, "minimenu.last_known_parentcatname" ) ); + category_publish ( CFBYNAME, key ); + // since we forced it by hand, no need to do a cat-scan below + catpick = NULL; + } + } else if ( dc ) { catpick = dc; } -- 2.39.2