mirror of https://github.com/adamdruppe/arsd.git
stuff
This commit is contained in:
parent
f24955f273
commit
3d9718be32
|
@ -14,6 +14,8 @@ I have [a patreon](https://www.patreon.com/adam_d_ruppe) and my (almost) [weekly
|
|||
|
||||
This only lists changes that broke things and got a major version bump. I didn't start keeping track here until 9.0.
|
||||
|
||||
Please note that I DO consider changes to build process to be a breaking change, but I do NOT consider symbol additions, changes to undocumented members, or the occasional non-fatal deprecation to be breaking changes. Undocumented members may be changed at any time, whereas additions and/or deprecations will be a minor version change.
|
||||
|
||||
## 9.0
|
||||
|
||||
simpledisplay's OperatingSystemFont, which is also used by terminalemulator.d (which is used by terminal.d's -version=TerminalDirectToEmulator function) would previously only load X Core Fonts. It now prefers TrueType fonts via Xft. This loads potentially different fonts and the sizes are interpreted differently, so you may need to adjust your preferences there. To restore previous behavior, prefix your font name strings with "core:".
|
||||
|
|
15
jsvar.d
15
jsvar.d
|
@ -2361,7 +2361,7 @@ WrappedNativeObject wrapNativeObject(Class, bool special = false)(Class obj) if(
|
|||
// wrap the other methods
|
||||
// and wrap members as scriptable properties
|
||||
|
||||
foreach(memberName; __traits(allMembers, Class)) static if(is(typeof(__traits(getMember, obj, memberName)) type)) {
|
||||
foreach(memberName; __traits(allMembers, Class)) static if(!mixin(deprecationCheck()) && is(typeof(__traits(getMember, obj, memberName)) type)) {
|
||||
static if(is(type == function)) {
|
||||
auto os = new OverloadSet();
|
||||
foreach(idx, overload; AliasSeq!(__traits(getOverloads, obj, memberName))) static if(.isScriptable!(__traits(getAttributes, overload))()) {
|
||||
|
@ -2512,8 +2512,10 @@ bool isCallableJsvarObject(var possibility) {
|
|||
if(possibility._payload._object is null)
|
||||
return false;
|
||||
|
||||
if(possibility._payload._object._peekMember("opCall", true))
|
||||
return true;
|
||||
if(var* test = possibility._payload._object._peekMember("opCall", true)) {
|
||||
if(isCallableJsvarObject(*test))
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
|
@ -2842,6 +2844,13 @@ string static_foreach(size_t length, int t_start_idx, int t_end_idx, string[] t.
|
|||
return a;
|
||||
}
|
||||
|
||||
private string deprecationCheck() {
|
||||
static if(__VERSION__ >= 2077)
|
||||
return "__traits(isDeprecated, __traits(getMember, obj, memberName))";
|
||||
else
|
||||
return "false";
|
||||
}
|
||||
|
||||
// LOL this can't work because function pointers drop the default :(
|
||||
private
|
||||
auto ParamDefault(alias T, size_t idx)() {
|
||||
|
|
|
@ -184,7 +184,7 @@ class ColorPickerDialog : Dialog {
|
|||
updateCurrent();
|
||||
});
|
||||
|
||||
void helper(Event event) {
|
||||
void helper(MouseEventBase event) {
|
||||
auto h = cast(double) event.clientX / hslImage.width * 360.0;
|
||||
auto s = 1.0 - (cast(double) event.clientY / hslImage.height * 1.0);
|
||||
auto l = this.l.content.to!double;
|
||||
|
@ -199,14 +199,14 @@ class ColorPickerDialog : Dialog {
|
|||
}
|
||||
|
||||
if(hslImage !is null)
|
||||
wid.addEventListener("mousedown", &helper);
|
||||
wid.addEventListener((MouseDownEvent ev) { helper(ev); });
|
||||
if(hslImage !is null)
|
||||
wid.addEventListener("mousemove", (Event event) {
|
||||
wid.addEventListener((MouseMoveEvent event) {
|
||||
if(event.state & ModifierState.leftButtonDown)
|
||||
helper(event);
|
||||
});
|
||||
|
||||
this.addEventListener("keydown", (Event event) {
|
||||
this.addEventListener((KeyDownEvent event) {
|
||||
if(event.key == Key.Enter || event.key == Key.PadEnter)
|
||||
OK();
|
||||
if(event.key == Key.Escape)
|
||||
|
|
26
terminal.d
26
terminal.d
|
@ -8221,7 +8221,7 @@ version(TerminalDirectToEmulator) {
|
|||
|
||||
bool skipNextChar = false;
|
||||
|
||||
widget.addEventListener("mousedown", (Event ev) {
|
||||
widget.addEventListener((MouseDownEvent ev) {
|
||||
int termX = (ev.clientX - paddingLeft) / fontWidth;
|
||||
int termY = (ev.clientY - paddingTop) / fontHeight;
|
||||
|
||||
|
@ -8238,7 +8238,7 @@ version(TerminalDirectToEmulator) {
|
|||
redraw();
|
||||
});
|
||||
|
||||
widget.addEventListener("mouseup", (Event ev) {
|
||||
widget.addEventListener((MouseUpEvent ev) {
|
||||
int termX = (ev.clientX - paddingLeft) / fontWidth;
|
||||
int termY = (ev.clientY - paddingTop) / fontHeight;
|
||||
|
||||
|
@ -8252,7 +8252,7 @@ version(TerminalDirectToEmulator) {
|
|||
redraw();
|
||||
});
|
||||
|
||||
widget.addEventListener("mousemove", (Event ev) {
|
||||
widget.addEventListener((MouseMoveEvent ev) {
|
||||
int termX = (ev.clientX - paddingLeft) / fontWidth;
|
||||
int termY = (ev.clientY - paddingTop) / fontHeight;
|
||||
|
||||
|
@ -8266,7 +8266,7 @@ version(TerminalDirectToEmulator) {
|
|||
redraw();
|
||||
});
|
||||
|
||||
widget.addEventListener("keydown", (Event ev) {
|
||||
widget.addEventListener((KeyDownEvent ev) {
|
||||
if(ev.key == Key.C && (ev.state & ModifierState.shift) && (ev.state & ModifierState.ctrl)) {
|
||||
// ctrl+c is cancel so ctrl+shift+c ends up doing copy.
|
||||
copyToClipboard(getSelectedText());
|
||||
|
@ -8278,8 +8278,16 @@ version(TerminalDirectToEmulator) {
|
|||
return;
|
||||
}
|
||||
|
||||
auto keyToSend = ev.key;
|
||||
|
||||
static if(UsingSimpledisplayX11) {
|
||||
if((ev.state & ModifierState.alt) && ev.originalKeyEvent.charsPossible.length) {
|
||||
keyToSend = cast(Key) ev.originalKeyEvent.charsPossible[0];
|
||||
}
|
||||
}
|
||||
|
||||
defaultKeyHandler!(typeof(ev.key))(
|
||||
ev.key
|
||||
keyToSend
|
||||
, (ev.state & ModifierState.shift)?true:false
|
||||
, (ev.state & ModifierState.alt)?true:false
|
||||
, (ev.state & ModifierState.ctrl)?true:false
|
||||
|
@ -8289,7 +8297,11 @@ version(TerminalDirectToEmulator) {
|
|||
return; // the character event handler will do others
|
||||
});
|
||||
|
||||
widget.addEventListener("char", (Event ev) {
|
||||
widget.addEventListener((CharEvent ev) {
|
||||
if(skipNextChar) {
|
||||
skipNextChar = false;
|
||||
return;
|
||||
}
|
||||
dchar c = ev.character;
|
||||
|
||||
if(c == 0x1c) /* ctrl+\, force quit */ {
|
||||
|
@ -8312,7 +8324,7 @@ version(TerminalDirectToEmulator) {
|
|||
TerminateProcess(hnd, -1);
|
||||
assert(0);
|
||||
}
|
||||
} else if(c == 3) /* ctrl+c, interrupt */ {
|
||||
} else if(c == 3) {// && !ev.shiftKey) /* ctrl+c, interrupt. But NOT ctrl+shift+c as that's a user-defined keystroke and/or "copy", but ctrl+shift+c never gets sent here.... thanks to the skipNextChar above */ {
|
||||
if(sigIntExtension)
|
||||
sigIntExtension();
|
||||
|
||||
|
|
Loading…
Reference in New Issue