示例#1
0
status_t
TWindowMenuItem::Invoke(BMessage* /*message*/)
{
	if (!fDragging) {
		if (fID >= 0) {
			int32 action = (modifiers() & B_CONTROL_KEY) != 0
				? B_MINIMIZE_WINDOW : B_BRING_TO_FRONT;

			bool doZoom = false;
			BRect zoomRect(0.0f, 0.0f, 0.0f, 0.0f);
			BMenuItem* item;
			if (!fExpanded)
				item = Menu()->Superitem();
			else
				item = this;

			if (item->Menu()->Window() != NULL) {
				zoomRect = item->Menu()->ConvertToScreen(item->Frame());
				doZoom = (fMini && action == B_BRING_TO_FRONT)
					|| (!fMini && action == B_MINIMIZE_WINDOW);
			}

			do_window_action(fID, action, zoomRect, doZoom);
		}
	}
	return B_OK;
}
示例#2
0
static void WarpMouseToWindow(const char* windowName)
{
	int32 count;
	int32 *tokens = get_token_list(-1, &count);
	team_id pe_team = be_app->Team();
	bool found = false;
	for (int32 i = count-1; i>=0 && !found; i--)
	{
		window_info* windowInfo = get_window_info(tokens[i]);
		if (windowInfo && windowInfo->team == pe_team
		&& !strcmp(windowInfo->name, windowName))
		{
			do_window_action(windowInfo->id, B_BRING_TO_FRONT, BRect(0,0,0,0),
							 false);
			found = true;
		}
		free(windowInfo);
	}
	free(tokens);
}