Changeset 1337
- Timestamp:
- 09/14/11 08:25:24 (21 months ago)
- Location:
- trunk/core
- Files:
-
- 2 edited
-
gui.c (modified) (1 diff)
-
gui_fselect.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/core/gui.c
r1326 r1337 2970 2970 } 2971 2971 gui_fselect_init(LANG_STR_SELECT_TEXT_FILE, path, gui_draw_read_selected); 2972 void gui_fselect_set_key_redraw(int n); 2973 gui_fselect_set_key_redraw(1); 2972 2974 } 2973 2975 -
trunk/core/gui_fselect.c
r1310 r1337 69 69 static void (*fselect_on_select)(const char *fn); 70 70 static char raw_operation; 71 static int set_key_redraw_mode; 71 72 72 73 //------------------------------------------------------------------- … … 200 201 201 202 //------------------------------------------------------------------- 203 // Set flag to control how the erase/redraw happens when the set key 204 // is pressed. 205 // 0 - screen erase & mode restore done after call to fselect_on_select 206 // 1 - screen erase & mode restore done before call to fselect_on_select 207 // Needed for text reader to work correctly and to stop intermittent 208 // crashes when selecting fonts (hack - whole gui/kbd system needs an overhaul). 209 void gui_fselect_set_key_redraw(int n) 210 { 211 set_key_redraw_mode = n; 212 } 213 202 214 void gui_fselect_init(int title, const char* dir, void (*on_select)(const char *fn)) { 203 215 int i; … … 229 241 gui_fselect_redraw = 2; 230 242 gui_set_mode(GUI_MODE_FSELECT); 243 gui_fselect_set_key_redraw(0); 231 244 } 232 245 … … 973 986 974 987 //------------------------------------------------------------------- 988 static void exit_fselect() 989 { 990 gui_fselect_free_data(); 991 gui_fselect_marked_free_data(); 992 if (set_key_redraw_mode) 993 { 994 gui_set_mode(gui_fselect_mode_old); 995 draw_restore(); 996 } 997 if (fselect_on_select) 998 { 999 fselect_on_select(selected_file); 1000 } 1001 if (!set_key_redraw_mode) 1002 { 1003 gui_set_mode(gui_fselect_mode_old); 1004 draw_restore(); 1005 } 1006 } 1007 975 1008 void gui_fselect_kbd_process() { 976 1009 int i; … … 1050 1083 } else { 1051 1084 sprintf(selected_file, "%s/%s", current_dir, selected->name); 1052 gui_fselect_free_data(); 1053 gui_fselect_marked_free_data(); 1054 if (fselect_on_select) 1055 fselect_on_select(selected_file); 1056 gui_set_mode(gui_fselect_mode_old); 1057 draw_restore(); 1085 exit_fselect(); 1058 1086 } 1059 1087 } … … 1076 1104 break; 1077 1105 case KEY_MENU: 1078 gui_fselect_free_data(); 1079 gui_fselect_marked_free_data(); 1080 if (fselect_on_select) 1081 fselect_on_select(NULL); 1082 gui_set_mode(gui_fselect_mode_old); 1083 draw_restore(); 1084 break; 1085 } 1086 } 1087 1088 //------------------------------------------------------------------- 1106 exit_fselect(); 1107 break; 1108 } 1109 } 1110 1111 //-------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.