Mercurial > projects > dynamin
comparison dynamin/gui/windows_window.d @ 29:e6843df719a8
Use scope when creating EventArgs to avoid unnecessary heap usage.
author | Jordan Miner <jminer7@gmail.com> |
---|---|
date | Sat, 25 Jul 2009 15:25:38 -0500 |
parents | 00efca2c1545 |
children | 545af935f201 |
comparison
equal
deleted
inserted
replaced
28:00efca2c1545 | 29:e6843df719a8 |
---|---|
754 if(scrollLines == 0xFFFFFFFF) | 754 if(scrollLines == 0xFFFFFFFF) |
755 scrollLines = 3; | 755 scrollLines = 3; |
756 int delta = -cast(short)HIWORD(wParam); | 756 int delta = -cast(short)HIWORD(wParam); |
757 auto screenPt = Point(LOWORD(lParam), HIWORD(lParam)); | 757 auto screenPt = Point(LOWORD(lParam), HIWORD(lParam)); |
758 auto des = c.getDescendantAtPoint(c.screenToContent(screenPt)); | 758 auto des = c.getDescendantAtPoint(c.screenToContent(screenPt)); |
759 des.mouseTurned( | 759 scope args = new MouseTurnedEventArgs(delta, delta*scrollLines/120.0); |
760 new MouseTurnedEventArgs(delta, delta*scrollLines/120.0) ); | 760 des.mouseTurned(args); |
761 return 0; | 761 return 0; |
762 case WM_SYSKEYDOWN: | 762 case WM_SYSKEYDOWN: |
763 //Stdout.format("WM_SYSKEYDOWN: {:x}", cast(int)wParam).newline; | 763 //Stdout.format("WM_SYSKEYDOWN: {:x}", cast(int)wParam).newline; |
764 if(wParam == 0x79) return 0; | 764 if(wParam == 0x79) return 0; |
765 break; | 765 break; |
766 case WM_KEYDOWN: | 766 case WM_KEYDOWN: |
767 //Stdout.format("WM_KEYDOWN: {:x}", cast(int)wParam).newline; | 767 //Stdout.format("WM_KEYDOWN: {:x}", cast(int)wParam).newline; |
768 Control focused = c.focusedControl ? c.focusedControl : c; | 768 Control focused = c.focusedControl ? c.focusedControl : c; |
769 focused.keyDown(new KeyEventArgs( | 769 scope args = new KeyEventArgs( |
770 VKToKey(wParam), cast(bool)(lParam & (1 << 30)) )); | 770 VKToKey(wParam), cast(bool)(lParam & (1 << 30)) ); |
771 focused.keyDown(args); | |
771 return 0; | 772 return 0; |
772 case WM_SYSKEYUP: | 773 case WM_SYSKEYUP: |
773 //Stdout.format("WM_SYSKEYUP: {:x}", cast(int)wParam).newline; | 774 //Stdout.format("WM_SYSKEYUP: {:x}", cast(int)wParam).newline; |
774 if(wParam == 0x79) return 0; | 775 if(wParam == 0x79) return 0; |
775 break; | 776 break; |
776 case WM_KEYUP: | 777 case WM_KEYUP: |
777 //Stdout.format("WM_KEYUP: {:x}", cast(int)wParam).newline; | 778 //Stdout.format("WM_KEYUP: {:x}", cast(int)wParam).newline; |
778 Control focused = c.focusedControl ? c.focusedControl : c; | 779 Control focused = c.focusedControl ? c.focusedControl : c; |
779 focused.keyUp(new KeyEventArgs( VKToKey(wParam), false )); | 780 scope args = new KeyEventArgs( VKToKey(wParam), false ); |
781 focused.keyUp(args); | |
780 return 0; | 782 return 0; |
781 case WM_CHAR: | 783 case WM_CHAR: |
782 // DO NOT use the repeat count from the lParam to send multiple events | 784 // DO NOT use the repeat count from the lParam to send multiple events |
783 // I hate when programs do that | 785 // I hate when programs do that |
784 | 786 |
791 if(wParam == 0x0D) // change \r to \n | 793 if(wParam == 0x0D) // change \r to \n |
792 wParam = 0x0A; | 794 wParam = 0x0A; |
793 bool repeat; | 795 bool repeat; |
794 repeat = cast(bool)(lParam & (1 << 30)); | 796 repeat = cast(bool)(lParam & (1 << 30)); |
795 Control focused = c.focusedControl ? c.focusedControl : c; | 797 Control focused = c.focusedControl ? c.focusedControl : c; |
796 focused.keyTyped(new KeyTypedEventArgs(cast(dchar)wParam, repeat)); | 798 scope args = new KeyTypedEventArgs(cast(dchar)wParam, repeat); |
799 focused.keyTyped(args); | |
797 return 0; | 800 return 0; |
798 case WM_PRINT: | 801 case WM_PRINT: |
799 paintToHDC(cast(HDC)wParam, getControl(hwnd), null); | 802 paintToHDC(cast(HDC)wParam, getControl(hwnd), null); |
800 return 0; | 803 return 0; |
801 case WM_PAINT: | 804 case WM_PAINT: |