From f27f494cb2fb037694727d55dfbe2e3495ef70ae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Duval?= Date: Tue, 6 May 2008 21:18:31 +0000 Subject: [PATCH] when no input method is found but the replicant was loaded, we now unload it git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25330 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/input/AddOnManager.cpp | 13 +++++++++++++ src/servers/input/AddOnManager.h | 1 + 2 files changed, 14 insertions(+) diff --git a/src/servers/input/AddOnManager.cpp b/src/servers/input/AddOnManager.cpp index 378d6b097b..424351b05e 100644 --- a/src/servers/input/AddOnManager.cpp +++ b/src/servers/input/AddOnManager.cpp @@ -476,6 +476,13 @@ AddOnManager::RegisterMethod(BInputServerMethod* method, const entry_ref& ref, } +void +AddOnManager::UnloadReplicant() +{ + BDeskbar().RemoveItem(REPLICANT_CTL_NAME); +} + + void AddOnManager::LoadReplicant() { @@ -756,6 +763,12 @@ status_t AddOnManager::HandleMethodReplicant(BMessage* message, BMessage* reply) { CALLED(); + + if (InputServer::gInputMethodList.CountItems() == 0) { + UnloadReplicant(); + return B_OK; + } + LoadReplicant(); BAutolock lock(InputServer::gInputMethodListLocker); diff --git a/src/servers/input/AddOnManager.h b/src/servers/input/AddOnManager.h index 6c17636813..2e5f851f48 100644 --- a/src/servers/input/AddOnManager.h +++ b/src/servers/input/AddOnManager.h @@ -51,6 +51,7 @@ class AddOnManager : public BLooper { status_t HandleNodeMonitor(BMessage*); void LoadReplicant(); + void UnloadReplicant(); int32 GetReplicantAt(BMessenger target, int32 index) const; status_t GetReplicantName(BMessenger target, int32 uid, BMessage *reply) const; status_t GetReplicantView(BMessenger target, int32 uid, BMessage *reply) const;