mirror of https://github.com/adamdruppe/arsd.git
Minigui: LineEdit password style #272
This commit is contained in:
parent
edc4b393aa
commit
ec7370b270
87
minigui.d
87
minigui.d
|
@ -5059,6 +5059,51 @@ class LabeledLineEdit : Widget {
|
|||
}
|
||||
}
|
||||
|
||||
/++
|
||||
A labeled password edit.
|
||||
|
||||
History:
|
||||
Added January 25, 2021
|
||||
|
||||
Future_Directions:
|
||||
This might be merged with [LabeledLineEdit] at some point. If I do that in code, I'll
|
||||
alias the names or something.
|
||||
+/
|
||||
class LabeledPasswordEdit : Widget {
|
||||
///
|
||||
this(string label = "Password: ", Widget parent = null) {
|
||||
super(parent);
|
||||
tabStop = false;
|
||||
auto hl = new HorizontalLayout(this);
|
||||
this.label = new TextLabel(label, hl);
|
||||
this.lineEdit = new PasswordEdit(hl);
|
||||
}
|
||||
TextLabel label; ///
|
||||
PasswordEdit lineEdit; ///
|
||||
|
||||
override int minHeight() { return Window.lineHeight + 4; }
|
||||
override int maxHeight() { return Window.lineHeight + 4; }
|
||||
|
||||
///
|
||||
string content() {
|
||||
return lineEdit.content;
|
||||
}
|
||||
///
|
||||
void content(string c) {
|
||||
return lineEdit.content(c);
|
||||
}
|
||||
|
||||
///
|
||||
void selectAll() {
|
||||
lineEdit.selectAll();
|
||||
}
|
||||
|
||||
override void focus() {
|
||||
lineEdit.focus();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
class MainWindow : Window {
|
||||
///
|
||||
|
@ -7102,8 +7147,50 @@ class LineEdit : EditableTextWidget {
|
|||
}
|
||||
override int maxHeight() { return Window.lineHeight + 4; }
|
||||
override int minHeight() { return Window.lineHeight + 4; }
|
||||
|
||||
/+
|
||||
@property void passwordMode(bool p) {
|
||||
SetWindowLongPtr(hwnd, GWL_STYLE, GetWindowLongPtr(hwnd, GWL_STYLE) | ES_PASSWORD);
|
||||
}
|
||||
+/
|
||||
}
|
||||
|
||||
/++
|
||||
A [LineEdit] that displays `*` in place of the actual characters.
|
||||
|
||||
Alas, Windows requires the window to be created differently to use this style,
|
||||
so it had to be a new class instead of a toggle on and off on an existing object.
|
||||
|
||||
FIXME: this is not yet implemented on Linux, it will work the same as a TextEdit there for now.
|
||||
|
||||
History:
|
||||
Added January 24, 2021
|
||||
+/
|
||||
class PasswordEdit : EditableTextWidget {
|
||||
version(custom_widgets) {
|
||||
override bool showingVerticalScroll() { return false; }
|
||||
override bool showingHorizontalScroll() { return false; }
|
||||
}
|
||||
|
||||
///
|
||||
this(Widget parent = null) {
|
||||
super(parent);
|
||||
version(win32_widgets) {
|
||||
createWin32Window(this, "edit"w, "",
|
||||
ES_PASSWORD, WS_EX_CLIENTEDGE);//|WS_HSCROLL|ES_AUTOHSCROLL);
|
||||
} else version(custom_widgets) {
|
||||
setupCustomTextEditing();
|
||||
addEventListener("char", delegate(Widget _this, Event ev) {
|
||||
if(ev.character == '\n')
|
||||
ev.preventDefault();
|
||||
});
|
||||
} else static assert(false);
|
||||
}
|
||||
override int maxHeight() { return Window.lineHeight + 4; }
|
||||
override int minHeight() { return Window.lineHeight + 4; }
|
||||
}
|
||||
|
||||
|
||||
///
|
||||
class TextEdit : EditableTextWidget {
|
||||
///
|
||||
|
|
Loading…
Reference in New Issue