diff options
author | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-01-21 12:30:36 +0100 |
---|---|---|
committer | Thorbjørn Lindeijer <thorbjorn@lindeijer.nl> | 2012-01-22 11:12:17 +0100 |
commit | c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb (patch) | |
tree | d87655455c0a331c73bf5b762701fafaa5348688 /src/game.cpp | |
parent | 0d613d75b732c0d057acc3004f9b4322cf73d449 (diff) | |
download | mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.tar.gz mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.tar.bz2 mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.tar.xz mana-c4bdf324d7d464bc7fabbf88e1a6e66701c6e7cb.zip |
Allow resizing of the game in windowed mode
Window positions are semi-smartly corrected as a result of the resize.
Not supported when using OpenGL on Windows for now.
Reviewed-by: Yohann Ferreira
Diffstat (limited to 'src/game.cpp')
-rw-r--r-- | src/game.cpp | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/game.cpp b/src/game.cpp index 77ccfc44..1c24d5d1 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -217,8 +217,7 @@ Game::Game(): // Create the viewport viewport = new Viewport; - viewport->setDimension(gcn::Rectangle(0, 0, graphics->getWidth(), - graphics->getHeight())); + viewport->setSize(graphics->getWidth(), graphics->getHeight()); gcn::Container *top = static_cast<gcn::Container*>(gui->getTop()); top->add(viewport); @@ -417,8 +416,13 @@ void Game::handleInput() { bool used = false; + if (event.type == SDL_VIDEORESIZE) + { + // Let the client deal with this one (it'll pass down from there) + Client::instance()->resizeVideo(event.resize.w, event.resize.h); + } // Keyboard events (for discontinuous keys) - if (event.type == SDL_KEYDOWN) + else if (event.type == SDL_KEYDOWN) { gcn::Window *requestedWindow = NULL; @@ -996,3 +1000,9 @@ int Game::getCurrentTileHeight() const return DEFAULT_TILE_LENGTH; } + +void Game::videoResized(int width, int height) +{ + viewport->setSize(width, height); + mWindowMenu->setPosition(width - 3 - mWindowMenu->getWidth(), 3); +} |