diff options
author | Raphael Langella <raphael.langella@gmail.com> | 2010-11-01 00:27:05 +0100 |
---|---|---|
committer | Raphael Langella <raphael.langella@gmail.com> | 2010-11-01 00:27:49 +0100 |
commit | 5b1c13fbe968c539ac3221c41b215b569c0db9d7 (patch) | |
tree | fc285c9d5cda5cf09ec3a323f8f048395e52e9bf /crawl-ref/source/windowmanager-sdl.cc | |
parent | 52beaa9664334f4ffa9ae51764829730a98771e6 (diff) | |
download | crawl-ref-5b1c13fbe968c539ac3221c41b215b569c0db9d7.tar.gz crawl-ref-5b1c13fbe968c539ac3221c41b215b569c0db9d7.zip |
Don't change window size/placement in fullscreen
Diffstat (limited to 'crawl-ref/source/windowmanager-sdl.cc')
-rw-r--r-- | crawl-ref/source/windowmanager-sdl.cc | 91 |
1 files changed, 49 insertions, 42 deletions
diff --git a/crawl-ref/source/windowmanager-sdl.cc b/crawl-ref/source/windowmanager-sdl.cc index 1a5f9d859d..6c835f01c4 100644 --- a/crawl-ref/source/windowmanager-sdl.cc +++ b/crawl-ref/source/windowmanager-sdl.cc @@ -293,51 +293,11 @@ int SDLWrapper::init(coord_def *m_windowsz) y = (y > 0) ? y : video_info->current_h + y; m_windowsz->x = std::max(800, x); m_windowsz->y = std::max(480, y); - } #ifdef TARGET_OS_WINDOWS - // We move the window if it overlaps the taskbar. - const int title_bar = 29; - int delta_x = (wm->desktop_width() - m_windowsz->x) / 2; - int delta_y = (wm->desktop_height() - m_windowsz->y) / 2; - taskbar_pos tpos = get_taskbar_pos(); - int tsize = get_taskbar_size(); - - if (tpos == TASKBAR_TOP) - tsize += title_bar; // Title bar - else - tsize += 3; // Window border - - int overlap = tsize - (tpos & TASKBAR_H ? delta_y : delta_x); - - if (overlap > 0) - { - char env_str[50]; - int x = delta_x; - int y = delta_y; - - if (tpos & TASKBAR_H) - y += tpos == TASKBAR_TOP ? overlap : -overlap; - else - x += tpos == TASKBAR_LEFT ? overlap : -overlap; - - x = std::max(x, 0); - y = std::max(y, title_bar); - tsize += 6; - m_windowsz->x = std::min(m_windowsz->x, wm->desktop_width() - - (tpos & TASKBAR_V ? tsize : 0)); - m_windowsz->y = std::min(m_windowsz->y, wm->desktop_height() - - (tpos & TASKBAR_H ? tsize : 0) - - (tpos & TASKBAR_BOTTOM ? title_bar : 0)); - sprintf(env_str, "SDL_VIDEO_WINDOW_POS=%d,%d", x, y); - putenv(env_str); - } - else - { - putenv("SDL_VIDEO_WINDOW_POS=center"); - putenv("SDL_VIDEO_CENTERED=1"); - } + set_window_placement(m_windowsz); #endif + } m_context = SDL_SetVideoMode(m_windowsz->x, m_windowsz->y, 0, flags); if (!m_context) @@ -387,6 +347,53 @@ bool SDLWrapper::set_window_icon(const char* icon_name) return (true); } +#ifdef TARGET_OS_WINDOWS +void SDLWrapper::set_window_placement(coord_def *m_windowsz) +{ + // We move the window if it overlaps the taskbar. + const int title_bar = 29; + int delta_x = (wm->desktop_width() - m_windowsz->x) / 2; + int delta_y = (wm->desktop_height() - m_windowsz->y) / 2; + taskbar_pos tpos = get_taskbar_pos(); + int tsize = get_taskbar_size(); + + if (tpos == TASKBAR_TOP) + tsize += title_bar; // Title bar + else + tsize += 3; // Window border + + int overlap = tsize - (tpos & TASKBAR_H ? delta_y : delta_x); + + if (overlap > 0) + { + char env_str[50]; + int x = delta_x; + int y = delta_y; + + if (tpos & TASKBAR_H) + y += tpos == TASKBAR_TOP ? overlap : -overlap; + else + x += tpos == TASKBAR_LEFT ? overlap : -overlap; + + x = std::max(x, 0); + y = std::max(y, title_bar); + tsize += 6; + m_windowsz->x = std::min(m_windowsz->x, wm->desktop_width() + - (tpos & TASKBAR_V ? tsize : 0)); + m_windowsz->y = std::min(m_windowsz->y, wm->desktop_height() + - (tpos & TASKBAR_H ? tsize : 0) + - (tpos & TASKBAR_BOTTOM ? title_bar : 0)); + sprintf(env_str, "SDL_VIDEO_WINDOW_POS=%d,%d", x, y); + putenv(env_str); + } + else + { + putenv("SDL_VIDEO_WINDOW_POS=center"); + putenv("SDL_VIDEO_CENTERED=1"); + } +} +#endif + void SDLWrapper::resize(coord_def &m_windowsz) { glmanager->reset_view_for_resize(m_windowsz); |