From 23bc6f9187c3920d747dd8d4f8fb031f3f9b8eea Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Tue, 10 Mar 2015 17:44:41 +0300 Subject: [PATCH] fix issue GUI is blurry when using retina displays #72 --- src/dlangui/platforms/sdl/sdlapp.d | 17 ++++++++++++++--- src/dlangui/widgets/tabs.d | 3 +++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/dlangui/platforms/sdl/sdlapp.d b/src/dlangui/platforms/sdl/sdlapp.d index dcdabe88..1cde62f6 100644 --- a/src/dlangui/platforms/sdl/sdlapp.d +++ b/src/dlangui/platforms/sdl/sdlapp.d @@ -167,6 +167,16 @@ class SDLWindow : Window { return true; } + void doResize(int width, int height) { + int w = 0; + int h = 0; + SDL_GL_GetDrawableSize(_win, &w, &h); + if (w != width || h != height) { + Log.d("SDL_GL_GetDrawableSize returned ", w, "x", h, " while resize event reports ", width, "x", height); + } + onResize(w, h); + } + @property uint windowId() { if (_win) return SDL_GetWindowID(_win); @@ -920,13 +930,13 @@ class SDLPlatform : Platform { case SDL_WINDOWEVENT_RESIZED: debug(DebugSDL) Log.d("SDL_WINDOWEVENT_RESIZED win=", event.window.windowID, " pos=", event.window.data1, ",", event.window.data2); - w.onResize(event.window.data1, event.window.data2); + w.doResize(event.window.data1, event.window.data2); w.redraw(); break; case SDL_WINDOWEVENT_SIZE_CHANGED: debug(DebugSDL) Log.d("SDL_WINDOWEVENT_SIZE_CHANGED win=", event.window.windowID, " pos=", event.window.data1, ",", event.window.data2); - w.onResize(event.window.data1, event.window.data2); + w.doResize(event.window.data1, event.window.data2); w.redraw(); break; case SDL_WINDOWEVENT_CLOSE: @@ -1102,7 +1112,8 @@ version (Windows) { Runtime.initialize(); result = myWinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow); Log.i("calling Runtime.terminate()"); - Runtime.terminate(); + // commented out to fix hanging runtime.terminate when there are background threads + //Runtime.terminate(); } catch (Throwable e) // catch any uncaught exceptions { diff --git a/src/dlangui/widgets/tabs.d b/src/dlangui/widgets/tabs.d index fa18fd7d..506a5d2c 100644 --- a/src/dlangui/widgets/tabs.d +++ b/src/dlangui/widgets/tabs.d @@ -650,6 +650,9 @@ class TabWidget : VerticalLayout, TabHandler, TabCloseHandler { focusGroup = true; } + TabControl tabControl() { return _tabControl; } + TabHost tabHost() { return _tabHost; } + /// signal of tab change (e.g. by clicking on tab header) Signal!TabHandler onTabChangedListener; /// signal on tab close button