comparison win/dw.c @ 997:dfa2204e231f

Fixes for dw_mle_import to make it function like the other platforms on Windows.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sat, 07 May 2011 20:04:34 +0000
parents 87dc0f5f96d0
children 1b40686277df
comparison
equal deleted inserted replaced
996:69cf9f26e899 997:dfa2204e231f
6812 unsigned int API dw_mle_import(HWND handle, char *buffer, int startpoint) 6812 unsigned int API dw_mle_import(HWND handle, char *buffer, int startpoint)
6813 { 6813 {
6814 int textlen, len = GetWindowTextLength(handle); 6814 int textlen, len = GetWindowTextLength(handle);
6815 char *tmpbuf; 6815 char *tmpbuf;
6816 6816
6817 if((textlen = strlen(buffer)) < 1)
6818 return startpoint;
6819
6820 startpoint++;
6821 tmpbuf = calloc(1, len + textlen + startpoint + 2);
6822
6823 if(startpoint < 0) 6817 if(startpoint < 0)
6824 startpoint = 0; 6818 startpoint = 0;
6825 6819
6820 if(!buffer || (textlen = strlen(buffer)) < 1)
6821 return startpoint;
6822
6823 tmpbuf = calloc(1, len + textlen + startpoint + 2);
6824
6826 if(len) 6825 if(len)
6827 { 6826 {
6828 char *dest, *start; 6827 char *dest, *start;
6829 int copylen = len - startpoint; 6828 int copylen = len - startpoint;
6830 6829
6831 GetWindowText(handle, tmpbuf, len+1); 6830 GetWindowText(handle, tmpbuf, len+1);
6832 6831
6833 dest = &tmpbuf[startpoint+textlen-1]; 6832 dest = &tmpbuf[startpoint+textlen];
6834 start = &tmpbuf[startpoint]; 6833 start = &tmpbuf[startpoint];
6835 6834
6836 if(copylen > 0) 6835 if(copylen > 0)
6837 memcpy(dest, start, copylen); 6836 memcpy(dest, start, copylen);
6838 } 6837 }
6839 memcpy(&tmpbuf[startpoint], buffer, textlen); 6838 memcpy(&tmpbuf[startpoint], buffer, textlen);
6840 6839
6841 SetWindowText(handle, tmpbuf); 6840 SetWindowText(handle, tmpbuf);
6842 6841
6843 free(tmpbuf); 6842 free(tmpbuf);
6844 return (startpoint + textlen - 1); 6843 return (startpoint + textlen);
6845 } 6844 }
6846 6845
6847 /* 6846 /*
6848 * Grabs text from an MLE box. 6847 * Grabs text from an MLE box.
6849 * Parameters: 6848 * Parameters: