comparison gtk3/dw.c @ 1501:7060e258e383

Allow passing NULL to the dw_container_change/set_item() APIs on GTK3.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Mon, 26 Dec 2011 21:20:54 +0000
parents 97e5e8688fe1
children fcdd9e3c735a
comparison
equal deleted inserted replaced
1500:97002721c4ca 1501:7060e258e383
5774 * Internal representation of dw_container_set_item() extracted so we can pass 5774 * Internal representation of dw_container_set_item() extracted so we can pass
5775 * two data pointers; icon and text for dw_filesystem_set_item(). 5775 * two data pointers; icon and text for dw_filesystem_set_item().
5776 */ 5776 */
5777 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data) 5777 void _dw_container_set_item(HWND handle, void *pointer, int column, int row, void *data)
5778 { 5778 {
5779 char numbuf[21], textbuffer[101]; 5779 char numbuf[21], textbuffer[101] = {0};
5780 int flag = 0; 5780 int flag = 0;
5781 GtkWidget *cont; 5781 GtkWidget *cont;
5782 GtkListStore *store = NULL; 5782 GtkListStore *store = NULL;
5783 int _locked_by_me = FALSE; 5783 int _locked_by_me = FALSE;
5784 5784
5803 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row)) 5803 if(gtk_tree_model_iter_nth_child(GTK_TREE_MODEL(store), &iter, NULL, row))
5804 { 5804 {
5805 if(flag & DW_CFA_STRINGANDICON) 5805 if(flag & DW_CFA_STRINGANDICON)
5806 { 5806 {
5807 void **thisdata = (void **)data; 5807 void **thisdata = (void **)data;
5808 HICN hicon = *((HICN *)thisdata[0]); 5808 HICN hicon = data ? *((HICN *)thisdata[0]) : 0;
5809 char *tmp = (char *)thisdata[1]; 5809 char *tmp = data ? (char *)thisdata[1] : NULL;
5810 GdkPixbuf *pixbuf = _find_pixbuf(hicon, NULL, NULL); 5810 GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL;
5811 5811
5812 gtk_list_store_set(store, &iter, 1, pixbuf, -1); 5812 gtk_list_store_set(store, &iter, 1, pixbuf, -1);
5813 gtk_list_store_set(store, &iter, 2, tmp, -1); 5813 gtk_list_store_set(store, &iter, 2, tmp, -1);
5814 } 5814 }
5815 else if(flag & DW_CFA_BITMAPORICON) 5815 else if(flag & DW_CFA_BITMAPORICON)
5816 { 5816 {
5817 HICN hicon = *((HICN *)data); 5817 HICN hicon = data ? *((HICN *)data) : 0;
5818 GdkPixbuf *pixbuf = _find_pixbuf(hicon, NULL, NULL); 5818 GdkPixbuf *pixbuf = hicon ? _find_pixbuf(hicon, NULL, NULL) : NULL;
5819 5819
5820 gtk_list_store_set(store, &iter, column + 2, pixbuf, -1); 5820 gtk_list_store_set(store, &iter, column + 2, pixbuf, -1);
5821 } 5821 }
5822 else if(flag & DW_CFA_STRING) 5822 else if(flag & DW_CFA_STRING)
5823 { 5823 {
5824 char *tmp = *((char **)data); 5824 char *tmp = data ? *((char **)data) : NULL;
5825 gtk_list_store_set(store, &iter, column + 2, tmp, -1); 5825 gtk_list_store_set(store, &iter, column + 2, tmp, -1);
5826 } 5826 }
5827 else if(flag & DW_CFA_ULONG) 5827 else if(flag & DW_CFA_ULONG)
5828 { 5828 {
5829 ULONG tmp = *((ULONG *)data); 5829 ULONG tmp = data ? *((ULONG *)data): 0;
5830 5830
5831 gtk_list_store_set(store, &iter, column + 2, tmp, -1); 5831 gtk_list_store_set(store, &iter, column + 2, tmp, -1);
5832 } 5832 }
5833 else if(flag & DW_CFA_DATE) 5833 else if(flag & DW_CFA_DATE)
5834 { 5834 {
5835 struct tm curtm; 5835 if(data)
5836 CDATE cdate = *((CDATE *)data); 5836 {
5837 5837 struct tm curtm;
5838 memset( &curtm, 0, sizeof(curtm) ); 5838 CDATE cdate = *((CDATE *)data);
5839 curtm.tm_mday = cdate.day; 5839
5840 curtm.tm_mon = cdate.month - 1; 5840 memset( &curtm, 0, sizeof(curtm) );
5841 curtm.tm_year = cdate.year - 1900; 5841 curtm.tm_mday = cdate.day;
5842 5842 curtm.tm_mon = cdate.month - 1;
5843 strftime(textbuffer, 100, "%x", &curtm); 5843 curtm.tm_year = cdate.year - 1900;
5844 5844
5845 strftime(textbuffer, 100, "%x", &curtm);
5846 }
5845 gtk_list_store_set(store, &iter, column + 2, textbuffer, -1); 5847 gtk_list_store_set(store, &iter, column + 2, textbuffer, -1);
5846 } 5848 }
5847 else if(flag & DW_CFA_TIME) 5849 else if(flag & DW_CFA_TIME)
5848 { 5850 {
5849 struct tm curtm; 5851 if(data)
5850 CTIME ctime = *((CTIME *)data); 5852 {
5851 5853 struct tm curtm;
5852 memset( &curtm, 0, sizeof(curtm) ); 5854 CTIME ctime = *((CTIME *)data);
5853 curtm.tm_hour = ctime.hours; 5855
5854 curtm.tm_min = ctime.minutes; 5856 memset( &curtm, 0, sizeof(curtm) );
5855 curtm.tm_sec = ctime.seconds; 5857 curtm.tm_hour = ctime.hours;
5856 5858 curtm.tm_min = ctime.minutes;
5857 strftime(textbuffer, 100, "%X", &curtm); 5859 curtm.tm_sec = ctime.seconds;
5858 5860
5861 strftime(textbuffer, 100, "%X", &curtm);
5862 }
5859 gtk_list_store_set(store, &iter, column + 2, textbuffer, -1); 5863 gtk_list_store_set(store, &iter, column + 2, textbuffer, -1);
5860 } 5864 }
5861 } 5865 }
5862 } 5866 }
5863 DW_MUTEX_UNLOCK; 5867 DW_MUTEX_UNLOCK;