void CMiniMap::MouseRelease(int x, int y, int button) { if (mouseMove || mouseResize || mouseLook) { mouseMove = false; mouseResize = false; mouseLook = false; proxyMode = false; return; } if (proxyMode) { ProxyMouseRelease(x, y, button); proxyMode = false; return; } if (selecting) { SelectUnits(x, y); selecting = false; return; } if (button == SDL_BUTTON_LEFT) { if (showButtons && maximizeBox.Inside(x, y)) { ToggleMaximized(!!keys[SDLK_LSHIFT]); return; } if (showButtons && minimizeBox.Inside(x, y)) { minimized = true; return; } } }
void CMiniMap::ConfigCommand(const std::string& line) { const vector<string> words = CSimpleParser::Tokenize(line, 1); if (words.empty()) { return; } const string command = StringToLower(words[0]); if (command == "fullproxy") { if (words.size() >= 2) { fullProxy = !!atoi(words[1].c_str()); } else { fullProxy = !fullProxy; } } else if (command == "icons") { if (words.size() >= 2) { useIcons = !!atoi(words[1].c_str()); } else { useIcons = !useIcons; } } else if (command == "unitexp") { if (words.size() >= 2) { unitExponent = atof(words[1].c_str()); } UpdateGeometry(); } else if (command == "unitsize") { if (words.size() >= 2) { unitBaseSize = atof(words[1].c_str()); } unitBaseSize = std::max(0.0f, unitBaseSize); UpdateGeometry(); } else if (command == "drawcommands") { if (words.size() >= 2) { drawCommands = std::max(0, atoi(words[1].c_str())); } else { drawCommands = (drawCommands > 0) ? 0 : 1; } } else if (command == "drawprojectiles") { if (words.size() >= 2) { drawProjectiles = !!atoi(words[1].c_str()); } else { drawProjectiles = !drawProjectiles; } } else if (command == "simplecolors") { if (words.size() >= 2) { simpleColors = !!atoi(words[1].c_str()); } else { simpleColors = !simpleColors; } } // the following commands can not be used in dualscreen mode if (gu->dualScreenMode) { return; } if ((command == "geo") || (command == "geometry")) { if (words.size() < 2) { return; } ParseGeometry(words[1]); UpdateGeometry(); } else if ((command == "min") || (command == "minimize")) { if (words.size() >= 2) { minimized = !!atoi(words[1].c_str()); } else { minimized = !minimized; } } else if ((command == "max") || (command == "maximize") || (command == "maxspect")) { bool newMax = maximized; if (words.size() >= 2) { newMax = !!atoi(words[1].c_str()); } else { newMax = !newMax; } if (newMax != maximized) { ToggleMaximized(command == "maxspect"); } } }
bool CMiniMap::MousePress(int x, int y, int button) { if (minimized) { if ((x < buttonSize) && (y < buttonSize)) { minimized = false; return true; } else { return false; } } const bool inMap = mapBox.Inside(x, y); const bool inButtons = buttonBox.Inside(x, y); if (!inMap && !inButtons) { return false; } if (button == SDL_BUTTON_LEFT) { if (inMap && (guihandler->inCommand >= 0)) { proxyMode = true; ProxyMousePress(x, y, button); return true; } if (showButtons && inButtons) { if (moveBox.Inside(x, y)) { mouseMove = true; return true; } else if (resizeBox.Inside(x, y)) { mouseResize = true; return true; } else if (minimizeBox.Inside(x, y) || maximizeBox.Inside(x, y)) { return true; } } if (inMap && !mouse->buttons[SDL_BUTTON_LEFT].chorded) { selecting = true; return true; } } else if (inMap) { if ((fullProxy && (button == SDL_BUTTON_MIDDLE)) || (!fullProxy && (button == SDL_BUTTON_RIGHT))) { MoveView(x, y); if (maximized) { ToggleMaximized(false); } else { mouseLook = true; } return true; } else if (fullProxy && (button == SDL_BUTTON_RIGHT)) { proxyMode = true; ProxyMousePress(x, y, button); return true; } } return false; }
/** Process a key press event. */ void HandleKeyPress(const XKeyEvent *event) { ClientNode *np; KeyType key; SetMousePosition(event->x_root, event->y_root, event->window); key = GetKey(event); np = GetActiveClient(); switch(key & 0xFF) { case KEY_EXEC: RunKeyCommand(event); break; case KEY_DESKTOP: ChangeDesktop((key >> 8) - 1); break; case KEY_RDESKTOP: RightDesktop(); break; case KEY_LDESKTOP: LeftDesktop(); break; case KEY_UDESKTOP: AboveDesktop(); break; case KEY_DDESKTOP: BelowDesktop(); break; case KEY_SHOWDESK: ShowDesktop(); break; case KEY_SHOWTRAY: ShowAllTrays(); break; case KEY_NEXT: StartWindowWalk(); FocusNext(); break; case KEY_NEXTSTACK: StartWindowStackWalk(); WalkWindowStack(1); break; case KEY_PREV: StartWindowWalk(); FocusPrevious(); break; case KEY_PREVSTACK: StartWindowStackWalk(); WalkWindowStack(0); break; case KEY_CLOSE: if(np) { DeleteClient(np); } break; case KEY_SHADE: if(np) { if(np->state.status & STAT_SHADED) { UnshadeClient(np); } else { ShadeClient(np); } } break; case KEY_STICK: if(np) { if(np->state.status & STAT_STICKY) { SetClientSticky(np, 0); } else { SetClientSticky(np, 1); } } break; case KEY_MOVE: if(np) { MoveClientKeyboard(np); } break; case KEY_RESIZE: if(np) { ResizeClientKeyboard(np); } break; case KEY_MIN: if(np) { MinimizeClient(np, 1); } break; case KEY_MAX: if(np) { if(np->state.maxFlags) { MaximizeClient(np, MAX_NONE); } else { MaximizeClient(np, MAX_HORIZ | MAX_VERT); } } break; case KEY_MAXTOP: ToggleMaximized(np, MAX_TOP | MAX_HORIZ); break; case KEY_MAXBOTTOM: ToggleMaximized(np, MAX_BOTTOM | MAX_HORIZ); break; case KEY_MAXLEFT: ToggleMaximized(np, MAX_LEFT | MAX_VERT); break; case KEY_MAXRIGHT: ToggleMaximized(np, MAX_RIGHT | MAX_VERT); break; case KEY_MAXV: ToggleMaximized(np, MAX_VERT); break; case KEY_MAXH: ToggleMaximized(np, MAX_HORIZ); break; case KEY_ROOT: ShowKeyMenu(event); break; case KEY_WIN: if(np) { RaiseClient(np); ShowWindowMenu(np, np->x, np->y, 1); } break; case KEY_RESTART: Restart(); break; case KEY_EXIT: Exit(); break; case KEY_FULLSCREEN: if(np) { if(np->state.status & STAT_FULLSCREEN) { SetClientFullScreen(np, 0); } else { SetClientFullScreen(np, 1); } } break; case KEY_SENDR: if(np) { SetClientDesktop(np, GetRightDesktop(np->state.desktop)); } break; case KEY_SENDL: if(np) { SetClientDesktop(np, GetLeftDesktop(np->state.desktop)); } break; case KEY_SENDU: if(np) { SetClientDesktop(np, GetAboveDesktop(np->state.desktop)); } break; case KEY_SENDD: if(np) { SetClientDesktop(np, GetBelowDesktop(np->state.desktop)); } break; default: break; } DiscardEnterEvents(); }