Ticket #2833: CloseAllWorkspace.diff
File CloseAllWorkspace.diff, 2.9 KB (added by , 15 years ago) |
---|
-
Tracker.h
192 192 193 193 void CloseAllWindows(); 194 194 void CloseWindowAndChildren(const node_ref *); 195 void CloseAllInWorkspace(); 195 196 void OpenInfoWindows(BMessage*); 196 197 void MoveRefsToTrash(const BMessage *); 197 198 void OpenContainerWindow(Model *, BMessage *refsList = NULL, -
ContainerWindow.cpp
1488 1488 be_app->PostMessage(B_QUIT_REQUESTED); 1489 1489 break; 1490 1490 1491 case kCloseAllWindows: 1492 be_app->PostMessage(kCloseAllWindows); 1493 break; 1494 1495 case kCloseAllInWorkspace: 1496 be_app->PostMessage(kCloseAllInWorkspace); 1497 break; 1498 1491 1499 case kRestoreBackgroundImage: 1492 1500 UpdateBackgroundImage(); 1493 1501 break; … … 1975 1983 item->SetTarget(this); 1976 1984 menu->AddItem(item); 1977 1985 1986 item = new BMenuItem("Close All", new BMessage(kCloseAllWindows), 'Q'); 1987 item->SetTarget(this); 1988 menu->AddItem(item); 1989 1990 item = new BMenuItem("Close All In Workspace", new BMessage(kCloseAllInWorkspace), 1991 'Q', B_SHIFT_KEY); 1992 item->SetTarget(this); 1993 menu->AddItem(item); 1994 1978 1995 menu->AddSeparatorItem(); 1979 1996 1980 1997 item = new BMenuItem("Preferences"B_UTF8_ELLIPSIS, new BMessage(kShowSettingsWindow)); -
Tracker.cpp
387 387 CloseAllWindows(); 388 388 break; 389 389 390 case kCloseAllInWorkspace: 391 CloseAllInWorkspace(); 392 break; 393 390 394 case kFindButton: 391 395 (new FindWindow())->Show(); 392 396 break; … … 837 841 } 838 842 } 839 843 840 841 844 void 842 845 TTracker::OpenContainerWindow(Model *model, BMessage *originalRefsList, 843 846 OpenSelector openSelector, uint32 openFlags, bool checkAlreadyOpen, … … 1173 1176 1174 1177 1175 1178 void 1179 TTracker::CloseAllInWorkspace() 1180 { 1181 AutoLock<WindowList> lock(&fWindowList); 1182 1183 int32 currentWorkspace = 1 << current_workspace(); 1184 // count from end to beginning so we can remove items safely 1185 for (int32 index = fWindowList.CountItems() - 1; index >= 0; index--) { 1186 BWindow *window = fWindowList.ItemAt(index); 1187 if (window->Workspaces() & currentWorkspace) 1188 // avoid the desktop 1189 if (!dynamic_cast<BDeskWindow *>(window) 1190 && !dynamic_cast<BStatusWindow *>(window)) 1191 window->PostMessage(B_QUIT_REQUESTED); 1192 } 1193 } 1194 1195 1196 void 1176 1197 TTracker::CloseAllWindows() 1177 1198 { 1178 1199 // this is a response to the DeskBar sending us a B_QUIT, when it really -
Commands.h
50 50 const uint32 kOpenSelectionWith = 'Tosu'; 51 51 const uint32 kCloseAllWindows = 'Tall'; 52 52 const uint32 kCloseWindowAndChildren = 'Tcwc'; 53 const uint32 kCloseAllInWorkspace = 'Tciw'; 53 54 54 55 // end external app messages 55 56