# HG changeset patch # User Jordan Miner # Date 1248553538 18000 # Node ID e6843df719a8b50e41719cd943b8aaacfa07ab8e # Parent 00efca2c15452d4bfcf5173651dc775b413b6e1e Use scope when creating EventArgs to avoid unnecessary heap usage. diff -r 00efca2c1545 -r e6843df719a8 dynamin/gui/windows_window.d --- a/dynamin/gui/windows_window.d Sat Jul 25 15:14:00 2009 -0500 +++ b/dynamin/gui/windows_window.d Sat Jul 25 15:25:38 2009 -0500 @@ -756,8 +756,8 @@ int delta = -cast(short)HIWORD(wParam); auto screenPt = Point(LOWORD(lParam), HIWORD(lParam)); auto des = c.getDescendantAtPoint(c.screenToContent(screenPt)); - des.mouseTurned( - new MouseTurnedEventArgs(delta, delta*scrollLines/120.0) ); + scope args = new MouseTurnedEventArgs(delta, delta*scrollLines/120.0); + des.mouseTurned(args); return 0; case WM_SYSKEYDOWN: //Stdout.format("WM_SYSKEYDOWN: {:x}", cast(int)wParam).newline; @@ -766,8 +766,9 @@ case WM_KEYDOWN: //Stdout.format("WM_KEYDOWN: {:x}", cast(int)wParam).newline; Control focused = c.focusedControl ? c.focusedControl : c; - focused.keyDown(new KeyEventArgs( - VKToKey(wParam), cast(bool)(lParam & (1 << 30)) )); + scope args = new KeyEventArgs( + VKToKey(wParam), cast(bool)(lParam & (1 << 30)) ); + focused.keyDown(args); return 0; case WM_SYSKEYUP: //Stdout.format("WM_SYSKEYUP: {:x}", cast(int)wParam).newline; @@ -776,7 +777,8 @@ case WM_KEYUP: //Stdout.format("WM_KEYUP: {:x}", cast(int)wParam).newline; Control focused = c.focusedControl ? c.focusedControl : c; - focused.keyUp(new KeyEventArgs( VKToKey(wParam), false )); + scope args = new KeyEventArgs( VKToKey(wParam), false ); + focused.keyUp(args); return 0; case WM_CHAR: // DO NOT use the repeat count from the lParam to send multiple events @@ -793,7 +795,8 @@ bool repeat; repeat = cast(bool)(lParam & (1 << 30)); Control focused = c.focusedControl ? c.focusedControl : c; - focused.keyTyped(new KeyTypedEventArgs(cast(dchar)wParam, repeat)); + scope args = new KeyTypedEventArgs(cast(dchar)wParam, repeat); + focused.keyTyped(args); return 0; case WM_PRINT: paintToHDC(cast(HDC)wParam, getControl(hwnd), null);