You can subscribe to this list here.
2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(6) |
Nov
(31) |
Dec
(6) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2006 |
Jan
(6) |
Feb
|
Mar
(17) |
Apr
(17) |
May
(27) |
Jun
(67) |
Jul
(26) |
Aug
(15) |
Sep
(2) |
Oct
(24) |
Nov
(6) |
Dec
|
2007 |
Jan
(4) |
Feb
(1) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(28) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2008 |
Jan
(21) |
Feb
(45) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2010 |
Jan
|
Feb
(3) |
Mar
|
Apr
(3) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
|
|
|
|
|
1
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
(1) |
17
|
18
|
19
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
30
|
31
|
|
|
|
|
|
|
From: Aldo C. <aca...@us...> - 2011-07-16 14:51:05
|
Update of /cvsroot/perl-win32-gui/Win32-GUI In directory vz-cvs-2.sog:/tmp/cvs-serv30632 Modified Files: CHANGELOG GUI.h GUI.xs GUI_Helpers.cpp GUI_Options.cpp Log Message: Fixed -background GDI object leak, added -newui option for BrowseForFolder Index: GUI_Options.cpp =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI_Options.cpp,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** GUI_Options.cpp 8 Apr 2010 21:26:48 -0000 1.17 --- GUI_Options.cpp 16 Jul 2011 14:51:03 -0000 1.18 *************** *** 58,62 **** eventID = PERLWIN32GUI_NEM_TIMER; } else if(strcmp(name, "Paint") == 0) { ! eventID = PERLWIN32GUI_NEM_PAINT; } else if(strcmp(name, "Click") == 0) { eventID = PERLWIN32GUI_NEM_CLICK; --- 58,62 ---- eventID = PERLWIN32GUI_NEM_TIMER; } else if(strcmp(name, "Paint") == 0) { ! eventID = PERLWIN32GUI_NEM_PAINT; } else if(strcmp(name, "Click") == 0) { eventID = PERLWIN32GUI_NEM_CLICK; *************** *** 72,78 **** eventID = PERLWIN32GUI_NEM_LOSTFOCUS; } else if(strcmp(name, "DropFiles") == 0) { ! eventID = PERLWIN32GUI_NEM_DROPFILE; } else if(strcmp(name, "Char") == 0) { ! eventID = PERLWIN32GUI_NEM_CHAR; } else { W32G_WARN("Win32::GUI: Unrecognized event name '%s' in -names!", name); --- 72,78 ---- eventID = PERLWIN32GUI_NEM_LOSTFOCUS; } else if(strcmp(name, "DropFiles") == 0) { ! eventID = PERLWIN32GUI_NEM_DROPFILE; } else if(strcmp(name, "Char") == 0) { ! eventID = PERLWIN32GUI_NEM_CHAR; } else { W32G_WARN("Win32::GUI: Unrecognized event name '%s' in -names!", name); *************** *** 81,85 **** if(eventID != 0) { // Clear current event if necessary ! if ( hv_exists(perlcs->hvEvents, name, strlen(name)) ) hv_delete(perlcs->hvEvents, name, strlen(name),G_DISCARD); // Store event --- 81,85 ---- if(eventID != 0) { // Clear current event if necessary ! if ( hv_exists(perlcs->hvEvents, name, strlen(name)) ) hv_delete(perlcs->hvEvents, name, strlen(name),G_DISCARD); // Store event *************** *** 89,93 **** SwitchBit(perlcs->dwEventMask, eventID, 1); } else { ! SwitchBit(perlcs->dwEventMask, eventID, 0); } } --- 89,93 ---- SwitchBit(perlcs->dwEventMask, eventID, 1); } else { ! SwitchBit(perlcs->dwEventMask, eventID, 0); } } *************** *** 124,128 **** if(strcmp(option, "-class") == 0) { next_i = i + 1; ! perlcs->cs.lpszClass = (LPCTSTR) classname_From(NOTXSCALL ST(next_i)); } else if(strcmp(option, "-text") == 0 || strcmp(option, "-caption") == 0 --- 124,128 ---- if(strcmp(option, "-class") == 0) { next_i = i + 1; ! perlcs->cs.lpszClass = (LPCTSTR) classname_From(NOTXSCALL ST(next_i)); } else if(strcmp(option, "-text") == 0 || strcmp(option, "-caption") == 0 *************** *** 201,208 **** lb.lbStyle = BS_SOLID; lb.lbColor = perlcs->clrBackground; ! if(perlcs->hBackgroundBrush != NULL) { DeleteObject((HGDIOBJ) perlcs->hBackgroundBrush); } perlcs->hBackgroundBrush = CreateBrushIndirect(&lb); } storing = newSViv((IV) perlcs->clrBackground); --- 201,209 ---- lb.lbStyle = BS_SOLID; lb.lbColor = perlcs->clrBackground; ! if(perlcs->hBackgroundBrush != NULL && perlcs->bDeleteBackgroundBrush) { DeleteObject((HGDIOBJ) perlcs->hBackgroundBrush); } perlcs->hBackgroundBrush = CreateBrushIndirect(&lb); + perlcs->bDeleteBackgroundBrush = TRUE; } storing = newSViv((IV) perlcs->clrBackground); *************** *** 210,213 **** --- 211,223 ---- storing = newSViv((IV) perlcs->hBackgroundBrush); stored = hv_store_mg(NOTXSCALL perlcs->hvSelf, "-backgroundbrush", 16, storing, 0); + } else if(strcmp(option, "-backgroundbrush") == 0) { + next_i = i + 1; + if(perlcs->hBackgroundBrush != NULL && perlcs->bDeleteBackgroundBrush) { + DeleteObject((HGDIOBJ) perlcs->hBackgroundBrush); + } + perlcs->hBackgroundBrush = (HBRUSH) handle_From(NOTXSCALL ST(next_i));; + perlcs->bDeleteBackgroundBrush = FALSE; + storing = newSViv((IV) perlcs->hBackgroundBrush); + stored = hv_store_mg(NOTXSCALL perlcs->hvSelf, "-backgroundbrush", 16, storing, 0); } else if(strcmp(option, "-size") == 0) { next_i = i + 1; *************** *** 297,301 **** SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_NEM, 0); SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_OEM, 1); ! } else if(stricmp(SvPV_nolen(ST(next_i)), "byref") == 0) { SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_NEM, 1); SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_OEM, 0); --- 307,311 ---- SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_NEM, 0); SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_OEM, 1); ! } else if(stricmp(SvPV_nolen(ST(next_i)), "byref") == 0) { SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_NEM, 1); SwitchBit(perlcs->dwPlStyle, PERLWIN32GUI_OEM, 0); *************** *** 613,617 **** LPREBARBANDINFO rbbi, int * index) { ! int i, next_i; char * option; --- 623,627 ---- LPREBARBANDINFO rbbi, int * index) { ! int i, next_i; char * option; *************** *** 748,752 **** if(strcmp(option, "-text") == 0) { next_i = i + 1; ! if(SvPOK(ST(next_i))) ti->lpszText = SvPV_nolen(ST(next_i)); else if (SvIOK(ST(next_i))) --- 758,762 ---- if(strcmp(option, "-text") == 0) { next_i = i + 1; ! if(SvPOK(ST(next_i))) ti->lpszText = SvPV_nolen(ST(next_i)); else if (SvIOK(ST(next_i))) *************** *** 864,868 **** if(eventID != 0) { // Clear current event if necessary ! if ( hv_exists(hvEvents, name, strlen(name)) ) hv_delete(hvEvents, name, strlen(name),G_DISCARD); // Store event --- 874,878 ---- if(eventID != 0) { // Clear current event if necessary ! if ( hv_exists(hvEvents, name, strlen(name)) ) hv_delete(hvEvents, name, strlen(name),G_DISCARD); // Store event *************** *** 911,915 **** #endif } ! next_i = -1; for(i = from_i; i < items; i++) { --- 921,925 ---- #endif } ! next_i = -1; for(i = from_i; i < items; i++) { *************** *** 940,947 **** char* key; I32 keylen; ! if (hvEvents == NULL) hvEvents = newHV(); ! hash = (HV*) SvRV(ST(next_i)); hv_iterinit( hash ); --- 950,957 ---- char* key; I32 keylen; ! if (hvEvents == NULL) hvEvents = newHV(); ! hash = (HV*) SvRV(ST(next_i)); hv_iterinit( hash ); *************** *** 952,956 **** } else if(strncmp(option, "-on", 3) == 0 && (char) option[3] >= 'A' && (char) option[3] <= 'Z') { next_i = i + 1; ! if (hvEvents == NULL) hvEvents = newHV(); --- 962,966 ---- } else if(strncmp(option, "-on", 3) == 0 && (char) option[3] >= 'A' && (char) option[3] <= 'Z') { next_i = i + 1; ! if (hvEvents == NULL) hvEvents = newHV(); *************** *** 994,1001 **** } } ! // if we found events, store it into parent window. if (hvEvents != NULL) { ! SV* svParent = SV_SELF_FROM_WINDOW (nid->hWnd); if (svParent != NULL && nid->uID != 0) { --- 1004,1011 ---- } } ! // if we found events, store it into parent window. if (hvEvents != NULL) { ! SV* svParent = SV_SELF_FROM_WINDOW (nid->hWnd); if (svParent != NULL && nid->uID != 0) { *************** *** 1014,1018 **** // Get notifyicon object from parent SV** notifyicon = hv_fetch_mg(NOTXSCALL (HV*) SvRV(svParent), NotifyIconName, strlen(NotifyIconName), FALSE); ! if(notifyicon != NULL && SvROK(*notifyicon)) { // Get NEM Events Hash sv** events = hv_fetch_mg(NOTXSCALL (HV*) SvRV(*notifyicon), "-events", 7, FALSE); --- 1024,1028 ---- // Get notifyicon object from parent SV** notifyicon = hv_fetch_mg(NOTXSCALL (HV*) SvRV(svParent), NotifyIconName, strlen(NotifyIconName), FALSE); ! if(notifyicon != NULL && SvROK(*notifyicon)) { // Get NEM Events Hash sv** events = hv_fetch_mg(NOTXSCALL (HV*) SvRV(*notifyicon), "-events", 7, FALSE); *************** *** 1025,1029 **** while ( val = hv_iternextsv( hvEvents, &key, &keylen ) ) { if ( hv_exists((HV*) SvRV(*events), key, keylen) ) ! hv_delete((HV*) SvRV(*events), key, keylen, G_DISCARD); hv_store_mg(NOTXSCALL (HV*) SvRV(*events), key, keylen, newSVsv(val), 0); } --- 1035,1039 ---- while ( val = hv_iternextsv( hvEvents, &key, &keylen ) ) { if ( hv_exists((HV*) SvRV(*events), key, keylen) ) ! hv_delete((HV*) SvRV(*events), key, keylen, G_DISCARD); hv_store_mg(NOTXSCALL (HV*) SvRV(*events), key, keylen, newSVsv(val), 0); } Index: GUI.xs =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI.xs,v retrieving revision 1.68 retrieving revision 1.69 diff -C2 -d -r1.68 -r1.69 *** GUI.xs 8 Apr 2010 21:26:48 -0000 1.68 --- GUI.xs 16 Jul 2011 14:51:03 -0000 1.69 *************** *** 731,734 **** --- 731,735 ---- perlud->clrBackground = perlcs.clrBackground; perlud->hBackgroundBrush = perlcs.hBackgroundBrush; + perlud->bDeleteBackgroundBrush = perlcs.bDeleteBackgroundBrush; perlud->hvEvents = perlcs.hvEvents; perlud->dwEventMask = perlcs.dwEventMask; *************** *** 927,930 **** --- 928,932 ---- perlcs.clrBackground = perlud->clrBackground; perlcs.hBackgroundBrush = perlud->hBackgroundBrush; + perlcs.bDeleteBackgroundBrush = perlud->bDeleteBackgroundBrush; perlcs.hvEvents = perlud->hvEvents; perlcs.dwEventMask = perlud->dwEventMask; *************** *** 944,947 **** --- 946,950 ---- printf("XS(Change): BEFORE clrBackground = 0x%x\n", perlcs.clrBackground); printf("XS(Change): BEFORE hBackgroundBrush = 0x%x\n", perlcs.hBackgroundBrush); + printf("XS(Change): BEFORE bDeleteBackgroundBrush = %d\n", perlcs.bDeleteBackgroundBrush); #endif // #### parse new window options *************** *** 970,973 **** --- 973,977 ---- printf("XS(Change): AFTER clrBackground = 0x%x\n", perlcs.clrBackground); printf("XS(Change): AFTER hBackgroundBrush = 0x%x\n", perlcs.hBackgroundBrush); + printf("XS(Change): AFTER bDeleteBackgroundBrush = %d\n", perlcs.bDeleteBackgroundBrush); #endif // #### Perform changes *************** *** 987,990 **** --- 991,995 ---- perlud->clrBackground = perlcs.clrBackground; perlud->hBackgroundBrush = perlcs.hBackgroundBrush; + perlud->bDeleteBackgroundBrush = perlcs.bDeleteBackgroundBrush; perlud->hvEvents = perlcs.hvEvents; perlud->dwEventMask = perlcs.dwEventMask; *************** *** 5166,5169 **** --- 5171,5178 ---- # -includefiles => 0/1 (default 0) # the list will include files as well folders + # -newui => 0/1 (default 0) + # use the "new" user interface (which has a "New folder" button) + # -nonewfolder => 0/1 (default 0) + # hides the "New folder" button (only meaningful with -newui => 1) # -owner => WINDOW # A Win32::GUI::Window or Win32::GUI::DialogBox object specifiying the *************** *** 5312,5315 **** --- 5321,5326 ---- } else BitmaskOption("-includefiles", bi.ulFlags, BIF_BROWSEINCLUDEFILES) } else BitmaskOption("-printeronly", bi.ulFlags, BIF_BROWSEFORPRINTER) + } else BitmaskOption("-newui", bi.ulFlags, BIF_NEWDIALOGSTYLE) + } else BitmaskOption("-nonewfolder", bi.ulFlags, BIF_NONEWFOLDERBUTTON) } else if(strcmp(option, "-directory") == 0) { next_i = i + 1; Index: GUI.h =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI.h,v retrieving revision 1.32 retrieving revision 1.33 diff -C2 -d -r1.32 -r1.33 *** GUI.h 8 Apr 2010 21:26:48 -0000 1.32 --- GUI.h 16 Jul 2011 14:51:03 -0000 1.33 *************** *** 271,274 **** --- 271,275 ---- COLORREF clrBackground; HBRUSH hBackgroundBrush; + BOOL bDeleteBackgroundBrush; HV* hvEvents; DWORD dwEventMask; *************** *** 296,299 **** --- 297,301 ---- COLORREF clrBackground; HBRUSH hBackgroundBrush; + BOOL bDeleteBackgroundBrush; WNDPROC WndProc; HV* hvEvents; Index: GUI_Helpers.cpp =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/GUI_Helpers.cpp,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** GUI_Helpers.cpp 8 Apr 2010 21:26:48 -0000 1.27 --- GUI_Helpers.cpp 16 Jul 2011 14:51:03 -0000 1.28 *************** *** 124,128 **** perlud->userData = NULL; } ! // If we stored an original wndproc, then restore it so that // WM_NCDESTORY messages get there. --- 124,133 ---- perlud->userData = NULL; } ! ! // If we stored a brush, destroy it ! if (perlud->bDeleteBackgroundBrush && perlud->hBackgroundBrush != NULL) { ! DeleteObject((HGDIOBJ) perlud->hBackgroundBrush); ! } ! // If we stored an original wndproc, then restore it so that // WM_NCDESTORY messages get there. *************** *** 130,134 **** SetWindowLongPtr(hwnd_self, GWLP_WNDPROC, (IV)(perlud->WndProc)); } ! // Free perlpud safefree (perlud); --- 135,139 ---- SetWindowLongPtr(hwnd_self, GWLP_WNDPROC, (IV)(perlud->WndProc)); } ! // Free perlpud safefree (perlud); *************** *** 201,205 **** pHv = hv_fetch_mg(NOTXSCALL (HV*) SvRV(pSv), "-handle", 7, 0); if(pHv != NULL) { ! hReturn = INT2PTR(HWND,SvIV(*pHv)); //printf("hReturn(1) is %i \n",hReturn); --- 206,210 ---- pHv = hv_fetch_mg(NOTXSCALL (HV*) SvRV(pSv), "-handle", 7, 0); if(pHv != NULL) { ! hReturn = INT2PTR(HWND,SvIV(*pHv)); //printf("hReturn(1) is %i \n",hReturn); *************** *** 635,639 **** void DrawSplitter(NOTXSPROC HWND hwnd, int x, int y, int w, int h) { ! static WORD _dotPatternBmp[8] = { 0x00aa, 0x0055, 0x00aa, 0x0055, 0x00aa, 0x0055, 0x00aa, 0x0055}; --- 640,644 ---- void DrawSplitter(NOTXSPROC HWND hwnd, int x, int y, int w, int h) { ! static WORD _dotPatternBmp[8] = { 0x00aa, 0x0055, 0x00aa, 0x0055, 0x00aa, 0x0055, 0x00aa, 0x0055}; *************** *** 758,762 **** if(ValidUserData(perlud)) { PERLUD_FETCH; /* fetch context */ ! //Tracker 1941264: Check if perlud->avHooks contains NULL. This was causing //a crash although it should not be possible that this is zero. It's likely --- 763,767 ---- if(ValidUserData(perlud)) { PERLUD_FETCH; /* fetch context */ ! //Tracker 1941264: Check if perlud->avHooks contains NULL. This was causing //a crash although it should not be possible that this is zero. It's likely Index: CHANGELOG =================================================================== RCS file: /cvsroot/perl-win32-gui/Win32-GUI/CHANGELOG,v retrieving revision 1.149 retrieving revision 1.150 diff -C2 -d -r1.149 -r1.150 *** CHANGELOG 8 Apr 2010 21:26:48 -0000 1.149 --- CHANGELOG 16 Jul 2011 14:51:03 -0000 1.150 *************** *** 6,9 **** --- 6,15 ---- Win32-GUI ChangeLog =================== + + [Aldo Calpini] : 16 July 2011 - Fixed -background GDI object leak, added -newui option for BrowseForFolder + - GUI.h + - GUI.xs + - GUI_Helpers.cpp + - GUI_Options.cpp + + [Jeremy White] : 08 April 2010 - Initial change to build with a 64bit compiler - DC.xs |