This commit is contained in:
Adam D. Ruppe 2021-05-04 10:10:16 -04:00
parent 534f9d9c35
commit f24955f273
2 changed files with 29 additions and 4 deletions

3
cgi.d
View File

@ -150,7 +150,7 @@ void main() {
For CGI, `dmd yourfile.d cgi.d` then put the executable in your cgi-bin directory.
For FastCGI: `dmd yourfile.d cgi.d -version=fastcgi` and run it. spawn-fcgi helps on nginx. You can put the file in the directory for Apache. On IIS, run it with a port on the command line.
For FastCGI: `dmd yourfile.d cgi.d -version=fastcgi` and run it. spawn-fcgi helps on nginx. You can put the file in the directory for Apache. On IIS, run it with a port on the command line (this causes it to call FCGX_OpenSocket, which can work on nginx too).
For SCGI: `dmd yourfile.d cgi.d -version=scgi` and run the executable, providing a port number on the command line.
@ -1751,6 +1751,7 @@ class Cgi {
parts.popFront();
requestUri = parts.front;
// FIXME: the requestUri could be an absolute path!!! should I rename it or something?
scriptName = requestUri[0 .. pathInfoStarts];
auto question = requestUri.indexOf("?");

View File

@ -106,7 +106,7 @@ interface->SetProgressValue(hwnd, 40, 100);
*/
/++
simpledisplay.d provides basic cross-platform GUI-related functionality,
simpledisplay.d (often abbreviated to "sdpy") provides basic cross-platform GUI-related functionality,
including creating windows, drawing on them, working with the clipboard,
timers, OpenGL, and more. However, it does NOT provide high level GUI
widgets. See my minigui.d, an extension to this module, for that
@ -5799,7 +5799,7 @@ version(X11) {
import core.stdc.stdio;
char[265] buffer;
XGetErrorText(dpy, evt.error_code, buffer.ptr, cast(int) buffer.length);
printf("ERROR: %s\n", buffer.ptr);
debug printf("X Error %d: %s / Serial: %lld, Opcode: %d.%d, XID: 0x%llx\n", evt.error_code, buffer.ptr, evt.serial, evt.request_code, evt.minor_code, evt.resourceid);
return 0;
}
@ -6348,7 +6348,7 @@ struct KeyEvent {
ubyte hardwareCode; /// A platform and hardware specific code for the key
bool pressed; /// true if the key was just pressed, false if it was just released. note: released events aren't always sent...
dchar character; ///
deprecated("This never actually worked anyway, you should do a character event handler instead.") dchar character;
uint modifierState; /// see enum [ModifierState]. They are bitwise combined together.
@ -12368,6 +12368,8 @@ mixin DynamicLoad!(XRender, "Xrender", 1, false, true) XRenderLibrary;
if(!librariesSuccessfullyLoaded)
throw new Exception("Unable to load X11 client libraries");
display = XOpenDisplay(displayName);
//XSetErrorHandler(&adrlogger);
//XSynchronize(display, true);
connectionSequence_++;
if(display is null)
throw new Exception("Unable to open X display");
@ -13957,6 +13959,8 @@ extern(C) nothrow @nogc {
Display* XOpenDisplay(const char*);
int XCloseDisplay(Display*);
int XSynchronize(Display*, bool);
Bool XQueryExtension(Display*, const char*, int*, int*, int*);
Bool XSupportsLocale();
@ -17049,6 +17053,13 @@ class ExperimentalTextComponent2 {
Stage 7: word wrap
Stage 8: justification
Stage 9: editing, selection, etc.
Operations:
insert text
overstrike text
select
cut
modify
+/
/++
@ -17068,6 +17079,17 @@ class ExperimentalTextComponent2 {
adjustDownForAscent to change the y params.
+/
static interface ComponentRenderHelper {
/+
When you do an edit, possibly stuff on the same line previously need to move (to adjust
the baseline), stuff subsequent needs to move (adjust x) and possibly stuff below needs
to move (adjust y to make room for new line) until you get back to the same position,
then you can stop - if one thing is unchanged, nothing after it is changed too.
Word wrap might change this as if can rewrap tons of stuff, but the same idea applies,
once you reach something that is unchanged, you can stop.
+/
void adjustDownForAscent(int amount); // at the end of the line it needs to do these
int ascent() const;
@ -17372,6 +17394,8 @@ class ExperimentalTextComponent2 {
// regular module namespace.
mixin template ExperimentalTextComponent() {
static:
alias Rectangle = arsd.color.Rectangle;
struct ForegroundColor {