From 3a27ae791e943c7e682d571394251a24102bbf23 Mon Sep 17 00:00:00 2001 From: Stefano Ceccherini Date: Mon, 13 Jun 2005 22:11:29 +0000 Subject: [PATCH] Added server support for activate_workspace(). Looks like it's not doing anything, though SetActiveWorkspace() returns true.... git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13103 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/interface/InterfaceDefs.cpp | 7 ++-- src/servers/app/ServerApp.cpp | 52 +++++++++++++++------------- 2 files changed, 30 insertions(+), 29 deletions(-) diff --git a/src/kits/interface/InterfaceDefs.cpp b/src/kits/interface/InterfaceDefs.cpp index 76d3a98d6b..1c6e1f128f 100644 --- a/src/kits/interface/InterfaceDefs.cpp +++ b/src/kits/interface/InterfaceDefs.cpp @@ -574,13 +574,12 @@ set_workspace_count(int32 count) _IMPEXP_BE int32 current_workspace() { - int32 index = 1; + int32 index = 0; BAppServerLink link; int32 code; - link.StartMessage(AS_CURRENT_WORKSPACE); - link.FlushWithReply(&code); - if(code==SERVER_TRUE) + link.StartMessage(AS_CURRENT_WORKSPACE); + if (link.FlushWithReply(&code) == B_OK && code == SERVER_TRUE) link.Read(&index); return index; diff --git a/src/servers/app/ServerApp.cpp b/src/servers/app/ServerApp.cpp index 00ac2a502c..46739c753f 100644 --- a/src/servers/app/ServerApp.cpp +++ b/src/servers/app/ServerApp.cpp @@ -657,17 +657,35 @@ ServerApp::DispatchMessage(int32 code, LinkMsgReader &link) break; } + case AS_CURRENT_WORKSPACE: + { + STRACE(("ServerApp %s: get current workspace\n", fSignature.String())); + + // TODO: Locking this way is not nice + RootLayer *root = gDesktop->ActiveRootLayer(); + root->Lock(); + + fLink.StartMessage(SERVER_TRUE); + fLink.Attach(root->ActiveWorkspaceIndex()); + fLink.Flush(); + + root->Unlock(); + break; + } + case AS_ACTIVATE_WORKSPACE: { - STRACE(("ServerApp %s: Activate Workspace UNIMPLEMETED\n",fSignature.String())); - - // Attached data - // 1) int32 workspace index - - // Error-checking is done in ActivateWorkspace, so this is a safe call - int32 workspace; - link.Read(&workspace); + STRACE(("ServerApp %s: activate workspace\n", fSignature.String())); + // TODO: See above + int32 index; + link.Read(&index); + RootLayer *root = gDesktop->ActiveRootLayer(); + root->Lock(); + root->SetActiveWorkspace(index); + root->Unlock(); + // no reply + break; } @@ -1773,23 +1791,7 @@ printf("ServerApp %s: AS_SCREEN_GET_MODE\n", fSignature.String()); root->Unlock(); break; } - - case AS_CURRENT_WORKSPACE: - { - STRACE(("ServerApp %s: get current workspace\n", fSignature.String())); - - // TODO: See above - RootLayer *root = gDesktop->ActiveRootLayer(); - root->Lock(); - - fLink.StartMessage(SERVER_TRUE); - fLink.Attach(root->ActiveWorkspaceIndex()); - fLink.Flush(); - - root->Unlock(); - break; - } - + default: printf("ServerApp %s received unhandled message code offset %s\n", fSignature.String(), MsgCodeToBString(code).String());