/** * Verarbeitung Mausrad runter * * @param[in] mc Mauskoordinaten Struktur * * @author Divan */ void WindowManager::Msg_WheelDown(const MouseCoords& mc) { if(!desktop) return; if(windows.empty()) { desktop->SetActive(true); desktop->Msg_WheelDown(mc); desktop->RelayMouseMessage(&Window::Msg_WheelDown, mc); // und raus return; } if(windows.back()->GetModal()) { windows.back()->Msg_WheelDown(mc); windows.back()->RelayMouseMessage(&Window::Msg_WheelDown, mc); return; } IngameWindow* foundWindow = FindWindowUnderMouse(mc); windows.back()->SetActive(false); if(foundWindow) { windows.remove(foundWindow); windows.push_back(foundWindow); foundWindow->SetActive(true); foundWindow->Msg_WheelDown(mc); foundWindow->RelayMouseMessage(&Window::Msg_WheelDown, mc); desktop->SetActive(false); }else{ desktop->SetActive(true); desktop->Msg_WheelDown(mc); desktop->RelayMouseMessage(&Window::Msg_WheelDown, mc);; } }
/** * Verarbeitung Mausrad runter * * @param[in] mc Mauskoordinaten Struktur */ void WindowManager::Msg_WheelDown(const MouseCoords& mc) { if(!curDesktop) return; if(windows.empty()) { curDesktop->SetActive(true); curDesktop->Msg_WheelDown(mc); curDesktop->RelayMouseMessage(&Window::Msg_WheelDown, mc); // und raus return; } IngameWindow& activeWnd = *windows.back(); if(activeWnd.IsModal()) { activeWnd.Msg_WheelDown(mc); activeWnd.RelayMouseMessage(&Window::Msg_WheelDown, mc); return; } IngameWindow* foundWindow = FindWindowUnderMouse(mc); activeWnd.SetActive(false); if(foundWindow) { windows.remove(foundWindow); windows.push_back(foundWindow); foundWindow->SetActive(true); foundWindow->Msg_WheelDown(mc); foundWindow->RelayMouseMessage(&Window::Msg_WheelDown, mc); curDesktop->SetActive(false); }else{ curDesktop->SetActive(true); curDesktop->Msg_WheelDown(mc); curDesktop->RelayMouseMessage(&Window::Msg_WheelDown, mc);; } }