From a772aa77ab39716e3527da4d119e2a8dcf53c835 Mon Sep 17 00:00:00 2001 From: "Adam D. Ruppe" Date: Sun, 26 Mar 2017 09:31:28 -0400 Subject: [PATCH] off by one in utf8 to utf16 conversion on windows draw text --- simpledisplay.d | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/simpledisplay.d b/simpledisplay.d index e81dd0c..2d9a979 100644 --- a/simpledisplay.d +++ b/simpledisplay.d @@ -914,13 +914,16 @@ enum WindowTypes : int { undecorated, /// A window that doesn't actually display on screen. You can use it for cases where you need a window handle to communicate or something. hidden, + /// A drop down menu, such as from a menu bar + dropdownMenu, + /// A popup menu, such as from a right click + popupMenu, /* + menu, /// a tearable menu bar splashScreen, /// a loading splash screen for your application tooltip, /// A tiny window showing temporary help text or something. notification, /// A popup bubble notification comboBoxDropdown, - dropdownMenu, - popupMenu, dialog, toolbar */ @@ -2141,7 +2144,7 @@ wchar[] makeWindowsString(in char[] str, wchar[] buffer, bool zeroTerminate = tr } if(zeroTerminate) { buffer[got] = 0; - got++; + //got++; } return buffer[0 .. got]; } @@ -4809,6 +4812,9 @@ version(Windows) { case WindowTypes.hidden: _hidden = true; break; + case WindowTypes.dropdownMenu: + case WindowTypes.popupMenu: + // FIXME } hwnd = CreateWindow(cn.ptr, toWStringz(title), style, @@ -6310,7 +6316,20 @@ version(X11) { XSelectInput(display, window, EventMask.StructureNotifyMask); // without this, we won't get destroy notification goto hiddenWindow; //break; + + case WindowTypes.dropdownMenu: + atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"(display); + motifHideDecorations(); + break; + case WindowTypes.popupMenu: + atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_POPUP_MENU"(display); + motifHideDecorations(); + break; /+ + case WindowTypes.menu: + atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_MENU"(display); + motifHideDecorations(); + break; case WindowTypes.desktop: atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_DESKTOP"(display); break; @@ -6332,12 +6351,6 @@ version(X11) { case WindowTypes.dialog: atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_DIALOG"(display); break; - case WindowTypes.dropdownMenu: - atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_DROPDOWN_MENU"(display); - break; - case WindowTypes.popupMenu: - atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_POPUP_MENU"(display); - break; case WindowTypes.tooltip: atoms[0] = GetAtom!"_NET_WM_WINDOW_TYPE_TOOLTIP"(display); break;