aboutsummaryrefslogtreecommitdiff
path: root/src/windows/identity/ui
diff options
context:
space:
mode:
Diffstat (limited to 'src/windows/identity/ui')
-rw-r--r--src/windows/identity/ui/cfg_identities_wnd.c2
-rw-r--r--src/windows/identity/ui/mainmenu.c24
-rw-r--r--src/windows/identity/ui/mainwnd.c4
-rw-r--r--src/windows/identity/ui/mainwnd.h1
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