diff options
Diffstat (limited to 'src/windows/identity/ui')
-rw-r--r-- | src/windows/identity/ui/cfg_identities_wnd.c | 2 | ||||
-rw-r--r-- | src/windows/identity/ui/mainmenu.c | 24 | ||||
-rw-r--r-- | src/windows/identity/ui/mainwnd.c | 4 | ||||
-rw-r--r-- | src/windows/identity/ui/mainwnd.h | 1 |
4 files changed, 30 insertions, 1 deletions
diff --git a/src/windows/identity/ui/cfg_identities_wnd.c b/src/windows/identity/ui/cfg_identities_wnd.c index 3ba843f..a8813d1 100644 --- a/src/windows/identity/ui/cfg_identities_wnd.c +++ b/src/windows/identity/ui/cfg_identities_wnd.c @@ -500,7 +500,7 @@ write_params_idents(void) { cfg_idents.applied = TRUE;
}
if (cfg_idents.work.sticky != cfg_idents.saved.sticky) {
- khc_write_int32(csp_cw, L"DefaultMonitor",
+ khc_write_int32(csp_cw, L"DefaultSticky",
!!cfg_idents.work.sticky);
cfg_idents.work.sticky = cfg_idents.saved.sticky;
cfg_idents.applied = TRUE;
diff --git a/src/windows/identity/ui/mainmenu.c b/src/windows/identity/ui/mainmenu.c index e27d039..6634549 100644 --- a/src/windows/identity/ui/mainmenu.c +++ b/src/windows/identity/ui/mainmenu.c @@ -820,6 +820,16 @@ khm_refresh_identity_menus(void) { khm_size n_idents = 0;
khm_size t;
khm_int32 rv = KHM_ERROR_SUCCESS;
+ khm_handle csp_cw = NULL;
+ khm_int32 idflags;
+ khm_int32 def_sticky = 0;
+ khm_boolean sticky_done = FALSE;
+
+ if (KHM_SUCCEEDED(khc_open_space(NULL, L"CredWindow", 0, &csp_cw))) {
+ khc_read_int32(csp_cw, L"DefaultSticky", &def_sticky);
+ khc_close_space(csp_cw);
+ csp_cw = NULL;
+ }
kcdb_identity_refresh_all();
@@ -921,6 +931,16 @@ khm_refresh_identity_menus(void) { khui_menu_insert_action(dest_def, 1000,
khm_get_identity_destroy_action(identity),
0);
+
+ idflags = 0;
+ kcdb_identity_get_flags(identity, &idflags);
+
+ if (!(idflags & KCDB_IDENT_FLAG_STICKY) && def_sticky) {
+ kcdb_identity_set_flags(identity,
+ KCDB_IDENT_FLAG_STICKY,
+ KCDB_IDENT_FLAG_STICKY);
+ sticky_done = TRUE;
+ }
}
if (idlist)
@@ -931,6 +951,10 @@ khm_refresh_identity_menus(void) { khui_action_unlock();
khui_refresh_actions();
+
+ if (sticky_done) {
+ InvalidateRect(khm_hwnd_main_cred, NULL, TRUE);
+ }
}
khm_boolean
diff --git a/src/windows/identity/ui/mainwnd.c b/src/windows/identity/ui/mainwnd.c index 76a3fde..38402a2 100644 --- a/src/windows/identity/ui/mainwnd.c +++ b/src/windows/identity/ui/mainwnd.c @@ -221,6 +221,10 @@ khm_main_wnd_proc(HWND hwnd, kmq_subscribe_hwnd(KMSG_KMM, hwnd);
mw_restart_refresh_timer(hwnd);
+ /* if the plug-ins finished loading before the window was
+ created, we would have missed the KMSG_KMM_I_DONE message.
+ So we check if the module load is complete and if so, fire
+ off KMSG_ACT_BEGIN_CMDLINE. */
if (!kmm_load_pending())
kmq_post_message(KMSG_ACT, KMSG_ACT_BEGIN_CMDLINE, 0, 0);
break;
diff --git a/src/windows/identity/ui/mainwnd.h b/src/windows/identity/ui/mainwnd.h index 263ffeb..7b14d35 100644 --- a/src/windows/identity/ui/mainwnd.h +++ b/src/windows/identity/ui/mainwnd.h @@ -33,6 +33,7 @@ extern ATOM khm_main_window_class;
extern HWND khm_hwnd_main;
extern HWND khm_hwnd_rebar;
+extern HWND khm_hwnd_main_cred;
#define KHM_MAIN_WND_NORMAL 0
#define KHM_MAIN_WND_MINI 1
|