diff -Naur beebem-0.0.7-orig/src/beebem_pages.cpp beebem-0.0.7/src/beebem_pages.cpp --- beebem-0.0.7-orig/src/beebem_pages.cpp Sun Jun 4 09:01:15 2006 +++ beebem-0.0.7/src/beebem_pages.cpp Tue Jun 6 03:20:11 2006 @@ -229,6 +229,10 @@ int Save_GTK_File_Selector(char *filename_ptr) { + if (filename_ptr == NULL){ + qERROR("filename_ptr is NULL! Cannot open GTK File selector!"); + return false; + } if (fullscreen == 1){ ToggleFullscreen(); @@ -249,8 +253,11 @@ g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button),"clicked" , G_CALLBACK (gtk_widget_destroy), G_OBJECT (filew)); - gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), DATA_DIR"/media/discs/"); - + if (strlen(filename_ptr)>0) + gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), filename_ptr); + else + gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), DATA_DIR"/media/discs/"); + gtk_widget_show (filew); gtk_main (); @@ -261,6 +268,11 @@ int Open_GTK_File_Selector(char *filename_ptr) { + if (filename_ptr == NULL){ + qERROR("filename_ptr is NULL! Cannot open GTK File selector!"); + return false; + } + if (fullscreen == 1){ ToggleFullscreen(); EG_TickBox_Untick(gui.fullscreen_widget_ptr); @@ -280,8 +292,11 @@ g_signal_connect_swapped (G_OBJECT (GTK_FILE_SELECTION (filew)->cancel_button),"clicked" , G_CALLBACK (gtk_widget_destroy), G_OBJECT (filew)); - gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), DATA_DIR"/media/discs/"); - + if (strlen(filename_ptr)>0) + gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), filename_ptr); + else + gtk_file_selection_set_filename (GTK_FILE_SELECTION(filew), DATA_DIR"/media/discs/"); + gtk_widget_show (filew); gtk_main (); diff -Naur beebem-0.0.7-orig/src/beebwin.cpp beebem-0.0.7/src/beebwin.cpp --- beebem-0.0.7-orig/src/beebwin.cpp Sat Jun 3 23:23:26 2006 +++ beebem-0.0.7/src/beebwin.cpp Tue Jun 6 03:20:17 2006 @@ -2133,7 +2133,11 @@ int BeebWin::ReadDisc(int Drive,HMENU dmenu) { //-- char DefaultPath[_MAX_PATH]; - char FileName[256]; +//-> char FileName[256]; +//++ + static char FileName[1024]=""; +//<- + //-- OPENFILENAME ofn; int gotName = false; //-- @@ -2142,7 +2146,7 @@ //-- SysReg.GetStringValue(HKEY_CURRENT_USER,CFG_REG_KEY,"DiscsPath",DefaultPath); //-- //-- ofn.nFilterIndex = 1; - FileName[0] = '\0'; +//-- FileName[0] = '\0'; //-- //-- /* Hmm, what do I put in all these fields! */ //-- ofn.lStructSize = sizeof(OPENFILENAME); @@ -2482,14 +2486,17 @@ void BeebWin::SaveState() { //-- char DefaultPath[_MAX_PATH]; - char FileName[260]; +//-> char FileName[260]; +//++ + static char FileName[1024]=""; +//<- //-- OPENFILENAME ofn; //-- //-- strcpy(DefaultPath, m_AppPath); //-- strcat(DefaultPath, "beebstate"); //-- SysReg.GetStringValue(HKEY_CURRENT_USER,CFG_REG_KEY,"StatesPath",DefaultPath); //-- - FileName[0] = '\0'; +//-- FileName[0] = '\0'; //-- //-- ofn.lStructSize = sizeof(OPENFILENAME); //-- ofn.hwndOwner = m_hWnd; @@ -2538,14 +2545,17 @@ void BeebWin::RestoreState() { //-- char DefaultPath[_MAX_PATH]; - char FileName[256]; +//-> char FileName[256]; +//++ + static char FileName[1024] = ""; +//<- //-- OPENFILENAME ofn; //-- //-- strcpy(DefaultPath, m_AppPath); //-- strcat(DefaultPath, "beebstate"); //-- SysReg.GetStringValue(HKEY_CURRENT_USER,CFG_REG_KEY,"StatesPath",DefaultPath); //-- - FileName[0] = '\0'; +//-- FileName[0] = '\0'; //-- //-- ofn.lStructSize = sizeof(OPENFILENAME); //-- ofn.hwndOwner = m_hWnd;