Started to implement workspace support. Surprisingly, with this small change changing workspaces actualy works. An it works quite well I may add. :-) So happy the new window manager which I heavily tested actualy works inside app_server. :-)

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12109 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Adi Oanca
2005-03-28 21:32:24 +00:00
parent 256c1b1502
commit eb6bc5d5ff
+15 -5
View File
@@ -552,6 +552,8 @@ void RootLayer::SetActiveWorkspace(int32 index)
}
}
desktop->Unlock();
if (ActiveWorkspace()->Focus())
{
BMessage activateMsg(B_WINDOW_ACTIVATED);
@@ -609,10 +611,6 @@ void RootLayer::SetActiveWorkspace(int32 index)
// TODO: if the user is holding/moving a window, *IF* the window *is not*
// in future active workspace, remove from curent one and place in
// future active workspace.
// RootLayer::Invalidate(&RootLayer's fFullVisible)
desktop->Unlock();
}
void RootLayer::SetWinBorderWorskpaces(WinBorder *winBorder, uint32 newWksIndex)
@@ -1360,7 +1358,19 @@ void RootLayer::KeyboardEventHandler(int32 code, BPortLink& msg)
{
STRACE(("Set Workspace %ld\n",scancode-1));
//TODO: SetWorkspace in KeyboardEventHandler
//SetWorkspace(scancode-2);
if (scancode - 1 > 0 && scancode -1 <= fWsCount
&& scancode - 2 != fActiveWksIndex)
{
WinBorder *exFocus = FocusWinBorder();
SetActiveWorkspace(scancode-2);
get_workspace_windows();
invalidate_layer(this, fFull);
draw_window_tab(exFocus, FocusWinBorder());
}
if (string)
free(string);
break;