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: