From 8ab10544e5222045b8859d4ae459293a5ea47ff0 Mon Sep 17 00:00:00 2001 From: Vadim Lopatin Date: Thu, 3 Dec 2015 11:30:20 +0300 Subject: [PATCH] X11 project files updated --- README.md | 10 +++- dlangui-monod-linux.dproj | 56 ++++++++++++++++++- dlangui-monod-linux.sln | 26 +++++++++ dub.json | 12 ++++ examples/dmledit/dmledit-monod-linux.dproj | 53 +++++++++++++++++- examples/example1/example1-monod-linux.dproj | 50 +++++++++++++++++ .../helloworld/helloworld-monod-linux.dproj | 37 ++++++++++++ .../spreadsheet/spreadsheet-monod-linux.dproj | 48 ++++++++++++++++ examples/tetris/src/tetris.d | 2 +- examples/tetris/tetris-monod-linux.dproj | 52 +++++++++++++++++ src/dlangui/platforms/x11/x11app.d | 3 +- 11 files changed, 343 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 4635cd6e..01feb3e7 100644 --- a/README.md +++ b/README.md @@ -23,12 +23,12 @@ WARNING: recent breaking change: when specifying dlangui library as DUB dependen Main features: -* Crossplatform (Win32 and Linux are supported in current version); can use SDL2 as a backend. +* Crossplatform (Win32, OSX, and Linux are supported in current version); can use SDL2 as a backend. * Mostly inspired by Android UI API (layouts, styles, two phase layout, ...) * Supports highly customizable UI themes and styles * Supports internationalization * Hardware acceleration using OpenGL (when built with version USE_OPENGL) -* Fallback to pure Win32 API / SDL / XCB when OpenGL is not available (e.g. opengl dynamic library cannot be loaded) +* Fallback to pure Win32 API / SDL / X11 when OpenGL is not available (e.g. opengl dynamic library cannot be loaded) * Actually it's a port (with major refactoring) of GUI library for cross platform OpenGL based implementation of Cool Reader app project from C++. * Non thread safe - all UI operations should be preformed in single thread @@ -175,6 +175,10 @@ Mac OSX development using Mono-D DMD, DUB, git, MonoDevelop with Mono-D plugin must be installed +Can use SDL2 or X11 as a backend. + +Native Cocoa backend - work is in progress. + In some directory, e.g. ~/src/d/ : Clone DlangUI repository @@ -197,12 +201,14 @@ Clone dependency libraries git clone https://github.com/Devisualization/image.git de_image git clone https://github.com/Dav1dde/gl3n.git git clone https://github.com/p0nce/DerelictCocoa.git + git clone https://github.com/nomad-software/x11.git Open solution file with Mono-D dlangui-monod-osx.sln + Linux development using Mono-D ------------------------------ diff --git a/dlangui-monod-linux.dproj b/dlangui-monod-linux.dproj index 631734ce..5e7e177f 100644 --- a/dlangui-monod-linux.dproj +++ b/dlangui-monod-linux.dproj @@ -175,14 +175,68 @@ true 0 - + bin\DebugX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + obj/DebugX11 false -Jviews -Jviews/res -Jviews/res/i18n -Jviews/res/mdpi +-Jviews/res/hdpi + false + libdlangui-monod-linux + StaticLibrary + true + 0 + + + bin\ReleaseX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/ReleaseX11 + false + -Jviews +-Jviews/res +-Jviews/res/i18n +-Jviews/res/mdpi +-Jviews/res/hdpi + false + libdlangui-monod-linux + StaticLibrary + true + 0 + + + bin\UnittestX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/UnittestX11 + false + -Jviews +-Jviews/res +-Jviews/res/i18n +-Jviews/res/mdpi -Jviews/res/hdpi false libdlangui-monod-linux diff --git a/dlangui-monod-linux.sln b/dlangui-monod-linux.sln index 1bc9c31e..ba4bb0e6 100644 --- a/dlangui-monod-linux.sln +++ b/dlangui-monod-linux.sln @@ -22,6 +22,8 @@ Global ReleaseMinimal|Any CPU = ReleaseMinimal|Any CPU UnittestMinimal|Any CPU = UnittestMinimal|Any CPU DebugX11|Any CPU = DebugX11|Any CPU + ReleaseX11|Any CPU = ReleaseX11|Any CPU + UnittestX11|Any CPU = UnittestX11|Any CPU EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Debug|Any CPU.ActiveCfg = Debug|x64 @@ -34,10 +36,14 @@ Global {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Release|Any CPU.Build.0 = Release|x64 {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64 {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64 + {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64 + {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64 {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Unittest|Any CPU.ActiveCfg = Unittest|x64 {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.Unittest|Any CPU.Build.0 = Unittest|x64 {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64 {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64 + {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64 + {075C374A-563A-4CAC-9E9F-0B6E1DFEAEC3}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Debug|Any CPU.ActiveCfg = Debug|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Debug|Any CPU.Build.0 = Debug|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64 @@ -48,10 +54,14 @@ Global {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Release|Any CPU.Build.0 = Release|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64 + {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64 + {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Unittest|Any CPU.ActiveCfg = Unittest|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.Unittest|Any CPU.Build.0 = Unittest|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64 {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64 + {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64 + {0A3A0D08-E4DC-418E-B92B-561CC91C2306}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Debug|Any CPU.ActiveCfg = Debug|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Debug|Any CPU.Build.0 = Debug|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64 @@ -62,10 +72,14 @@ Global {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Release|Any CPU.Build.0 = Release|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64 + {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64 + {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Unittest|Any CPU.ActiveCfg = Unittest|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.Unittest|Any CPU.Build.0 = Unittest|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64 {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64 + {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64 + {54BDE028-6064-4CA9-B6CA-4C0BEEE70F24}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.Debug|Any CPU.ActiveCfg = DebugX11|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.Debug|Any CPU.Build.0 = DebugX11|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64 @@ -76,10 +90,14 @@ Global {5BD82AA8-4026-44C2-8957-B4E2932542F0}.Release|Any CPU.Build.0 = Release|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64 + {5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64 + {5BD82AA8-4026-44C2-8957-B4E2932542F0}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.Unittest|Any CPU.ActiveCfg = Unittest|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.Unittest|Any CPU.Build.0 = Unittest|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64 {5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64 + {5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64 + {5BD82AA8-4026-44C2-8957-B4E2932542F0}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Debug|Any CPU.ActiveCfg = Debug|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Debug|Any CPU.Build.0 = Debug|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64 @@ -90,10 +108,14 @@ Global {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Release|Any CPU.Build.0 = Release|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64 + {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64 + {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Unittest|Any CPU.ActiveCfg = Unittest|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.Unittest|Any CPU.Build.0 = Unittest|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64 {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64 + {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64 + {8E722D80-CF8D-4D98-BEAE-7BC9E6752AC4}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Debug|Any CPU.ActiveCfg = Debug|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Debug|Any CPU.Build.0 = Debug|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.DebugMinimal|Any CPU.ActiveCfg = DebugMinimal|x64 @@ -104,9 +126,13 @@ Global {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Release|Any CPU.Build.0 = Release|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseMinimal|Any CPU.ActiveCfg = ReleaseMinimal|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseMinimal|Any CPU.Build.0 = ReleaseMinimal|x64 + {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseX11|Any CPU.ActiveCfg = ReleaseX11|x64 + {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.ReleaseX11|Any CPU.Build.0 = ReleaseX11|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Unittest|Any CPU.ActiveCfg = Unittest|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.Unittest|Any CPU.Build.0 = Unittest|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestMinimal|Any CPU.ActiveCfg = UnittestMinimal|x64 {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestMinimal|Any CPU.Build.0 = UnittestMinimal|x64 + {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestX11|Any CPU.ActiveCfg = UnittestX11|x64 + {A38BEF21-AAFE-4115-A978-63B7C8C2FBD1}.UnittestX11|Any CPU.Build.0 = UnittestX11|x64 EndGlobalSection EndGlobal diff --git a/dub.json b/dub.json index c32e31b8..91bcea88 100644 --- a/dub.json +++ b/dub.json @@ -95,6 +95,18 @@ "libs/windows/x86/SDL2.dll" ] }, + { + "name": "x11", + "versions": ["USE_X11", "USE_OPENGL", "USE_FREETYPE", "EmbedStandardResources"], + "versions-windows": ["Unicode"], + "dependencies": { + "dlib": "~>0.7.0", + "derelict-gl3": "~>1.0.16", + "derelict-ft": "~>1.0.2", + "gl3n": "~>1.2.0", + "x11": "~>1.0.9" + } + }, { "name": "sfml", "versions": ["USE_DSFML", "USE_OPENGL", "USE_FREETYPE", "EmbedStandardResources"], diff --git a/examples/dmledit/dmledit-monod-linux.dproj b/examples/dmledit/dmledit-monod-linux.dproj index 64b3fbd9..69c38021 100644 --- a/examples/dmledit/dmledit-monod-linux.dproj +++ b/examples/dmledit/dmledit-monod-linux.dproj @@ -175,6 +175,7 @@ USE_X11 + USE_OPENGL USE_FREETYPE EmbedStandardResources @@ -192,7 +193,57 @@ Executable true 0 - -L-lX11 + -lX11 + + + bin\ReleaseX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/ReleaseX11 + true + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n + + false + dmledit-monod-linux + Executable + true + 0 + -lX11 + + + bin\UnittestX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/UnittestX11 + true + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n + + false + dmledit-monod-linux + Executable + true + 0 + -lX11 diff --git a/examples/example1/example1-monod-linux.dproj b/examples/example1/example1-monod-linux.dproj index d251586e..d29955c0 100644 --- a/examples/example1/example1-monod-linux.dproj +++ b/examples/example1/example1-monod-linux.dproj @@ -195,6 +195,56 @@ 0 -lX11 + + bin\ReleaseX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/ReleaseX11 + true + -lX11 + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n + + false + example1-monod-linux + Executable + true + 0 + + + bin\UnittestX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/UnittestX11 + true + -lX11 + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n + + false + example1-monod-linux + Executable + true + 0 + diff --git a/examples/helloworld/helloworld-monod-linux.dproj b/examples/helloworld/helloworld-monod-linux.dproj index 566954c7..64e41d31 100644 --- a/examples/helloworld/helloworld-monod-linux.dproj +++ b/examples/helloworld/helloworld-monod-linux.dproj @@ -135,6 +135,7 @@ USE_X11 + USE_OPENGL USE_FREETYPE @@ -151,6 +152,42 @@ + + bin\ReleaseX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + + + obj/ReleaseX11 + true + -lX11 + false + helloworld-monod-linux + Executable + true + 0 + + + bin\UnittestX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + + + obj/UnittestX11 + true + -lX11 + false + helloworld-monod-linux + Executable + true + 0 + diff --git a/examples/spreadsheet/spreadsheet-monod-linux.dproj b/examples/spreadsheet/spreadsheet-monod-linux.dproj index aaad14b8..2a676cfe 100644 --- a/examples/spreadsheet/spreadsheet-monod-linux.dproj +++ b/examples/spreadsheet/spreadsheet-monod-linux.dproj @@ -176,6 +176,7 @@ USE_X11 + USE_OPENGL USE_FREETYPE EmbedStandardResources @@ -187,6 +188,53 @@ -Jviews/res/hdpi -Jviews/res/mdpi -Jviews/res/i18n + + false + spreadsheet-monod-linux + Executable + true + 0 + -lX11 + + + bin\ReleaseX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + false + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n + + false + spreadsheet-monod-linux + Executable + true + 0 + + + bin\UnittestX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + false + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n false spreadsheet-monod-linux diff --git a/examples/tetris/src/tetris.d b/examples/tetris/src/tetris.d index 6d0922cc..0478af09 100644 --- a/examples/tetris/src/tetris.d +++ b/examples/tetris/src/tetris.d @@ -34,7 +34,7 @@ extern (C) int UIAppMain(string[] args) { Platform.instance.uiTheme = "theme_default"; // create window - Window window = Platform.instance.createWindow("DLangUI: Tetris game example"d, null, WindowFlag.Modal); + Window window = Platform.instance.createWindow("DLangUI: Tetris game example"d, null, WindowFlag.Modal, 600, 400); window.mainWidget = new GameWidget(); diff --git a/examples/tetris/tetris-monod-linux.dproj b/examples/tetris/tetris-monod-linux.dproj index ff456cca..3b49891c 100644 --- a/examples/tetris/tetris-monod-linux.dproj +++ b/examples/tetris/tetris-monod-linux.dproj @@ -173,6 +173,7 @@ USE_X11 + USE_OPENGL USE_FREETYPE EmbedStandardResources @@ -184,6 +185,57 @@ -Jviews/res/hdpi -Jviews/res/mdpi -Jviews/res/i18n + + false + tetris-monod-linux + Executable + true + 0 + -lX11 + + + bin\ReleaseX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/ReleaseX11 + true + -lX11 + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n + + false + tetris-monod-linux + Executable + true + 0 + + + bin\UnittestX11 + + + USE_X11 + USE_OPENGL + USE_FREETYPE + EmbedStandardResources + + + obj/UnittestX11 + true + -lX11 + -Jviews +-Jviews/res +-Jviews/res/hdpi +-Jviews/res/mdpi +-Jviews/res/i18n false tetris-monod-linux diff --git a/src/dlangui/platforms/x11/x11app.d b/src/dlangui/platforms/x11/x11app.d index c9b280cb..5e3c3032 100644 --- a/src/dlangui/platforms/x11/x11app.d +++ b/src/dlangui/platforms/x11/x11app.d @@ -262,7 +262,8 @@ class X11Window : DWindow { at the top of the window and the name of the minimized window respectively. */ - XSetStandardProperties(x11display, _win, cast(char*)"My Window".ptr, cast(char*)"HI!".ptr, None, cast(char**)null, 0, cast(XSizeHints*)null); + char* caption8 = cast(char*)toUTF8(_caption).toStringz; + XSetStandardProperties(x11display, _win, caption8, caption8, None, cast(char**)null, 0, cast(XSizeHints*)null); /* this routine determines which types of input are allowed in the input. see the appropriate section for details...