From 137cb927f61152d59e60186717329deba6de94a5 Mon Sep 17 00:00:00 2001 From: Roman Chistokhodov Date: Thu, 12 Oct 2017 19:20:59 +0300 Subject: [PATCH] Fix for Windows --- examples/example1/src/example1.d | 4 ++-- src/dlangui/graphics/iconprovider.d | 14 ++++++++------ 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/examples/example1/src/example1.d b/examples/example1/src/example1.d index c15f2e24..a4602937 100644 --- a/examples/example1/src/example1.d +++ b/examples/example1/src/example1.d @@ -1241,8 +1241,7 @@ void main() { import dlangui.graphics.iconprovider; TableLayout icons = new TableLayout("icons"); - icons.layoutHeight(FILL_PARENT); - icons.colCount = 4; + icons.colCount = 6; for(StandardIcon icon = StandardIcon.init; icon <= StandardIcon.deviceCameraVideo; ++icon) { icons.addChild(new TextWidget(to!string(icon), to!dstring(icon)).fontSize(12.pointsToPixels).alignment(Align.Right | Align.VCenter)); @@ -1254,6 +1253,7 @@ void main() } icons.addChild(imageWidget).alignment(Align.Left | Align.VCenter); } + icons.margins(Rect(10,10,10,10)).layoutWidth(FILL_PARENT); tabs.addTab(icons, "Icons"d); } } diff --git a/src/dlangui/graphics/iconprovider.d b/src/dlangui/graphics/iconprovider.d index 314c9fd5..3fa15ce1 100644 --- a/src/dlangui/graphics/iconprovider.d +++ b/src/dlangui/graphics/iconprovider.d @@ -254,7 +254,7 @@ version(Windows) { import std.windows.syserror; _shell = wenforce(LoadLibraryA("Shell32"), "Could not load Shell32 library"); - _SHGetStockIconInfo = cast(typeof(&_dummy_SHGetStockIconInfo))enforce(GetProcAddress(_shell, "SHGetStockIconInfo")); + _SHGetStockIconInfo = cast(typeof(&_dummy_SHGetStockIconInfo))wenforce(GetProcAddress(_shell, "SHGetStockIconInfo"), "Could not load SHGetStockIconInfo"); } ~this() { @@ -284,7 +284,7 @@ version(Windows) _cache[id] = DrawBufRef(null); // save the fact that the icon was not found } } - return null; + return DrawBufRef(null); } override DrawBufRef getStandardIcon(StandardIcon icon) @@ -307,7 +307,7 @@ version(Windows) return SIID_APPLICATION; case folder: return SIID_FOLDER; - case openFolder: + case folderOpen: return SIID_FOLDEROPEN; case driveFloppy: return SIID_DRIVE35; @@ -319,7 +319,7 @@ version(Windows) return SIID_DRIVECD; case driveDVD: return SIID_DRIVEDVD; - case derver: + case server: return SIID_SERVER; case printer: return SIID_PRINTER; @@ -351,7 +351,7 @@ version(Windows) return SIID_VIDEOFILES; case fileZip: return SIID_ZIPFILE; - case documentUnknown: + case fileUnknown: return SIID_DOCNOASSOC; case warning: return SIID_WARNING; @@ -389,6 +389,7 @@ version(Windows) if (_SHGetStockIconInfo(id, SHGSI_ICON, &info) == S_OK) { return info.hIcon; } + Log.d("Could not get icon from stock. Id: ", id); return null; } @@ -423,6 +424,7 @@ version(Windows) if(!GetDIBits(hDC, iconInfo.hbmMask, 0,height,cast(LPVOID)alphaPixels.ptr, &infoheader, DIB_RGB_COLORS)) return null; + const int lsSrc = width*3; auto colorDrawBuf = new ColorDrawBuf(width, height); for(int y=0; y