Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_file/filesel.c
| Show First 20 Lines • Show All 321 Lines • ▼ Show 20 Lines | short ED_fileselect_set_params(SpaceFile *sfile) | ||||
| } | } | ||||
| return 1; | return 1; | ||||
| } | } | ||||
| /* The subset of FileSelectParams.flag items we store into preferences. */ | /* The subset of FileSelectParams.flag items we store into preferences. */ | ||||
| #define PARAMS_FLAGS_REMEMBERED (FILE_HIDE_DOT | FILE_SORT_INVERT) | #define PARAMS_FLAGS_REMEMBERED (FILE_HIDE_DOT | FILE_SORT_INVERT) | ||||
| void ED_fileselect_window_params_get(const wmWindow *win, int win_size[2], bool *is_maximized) | |||||
| { | |||||
| /* Get DPI/pixelsize independent size to be stored in preferences. */ | |||||
| WM_window_set_dpi(win); /* Ensure the DPI is taken from the right window. */ | |||||
| win_size[0] = WM_window_pixels_x(win) / UI_DPI_FAC; | |||||
| win_size[1] = WM_window_pixels_y(win) / UI_DPI_FAC; | |||||
| *is_maximized = WM_window_is_maximized(win); | |||||
| } | |||||
| void ED_fileselect_set_params_from_userdef(SpaceFile *sfile) | void ED_fileselect_set_params_from_userdef(SpaceFile *sfile) | ||||
| { | { | ||||
| wmOperator *op = sfile->op; | wmOperator *op = sfile->op; | ||||
| UserDef_FileSpaceData *sfile_udata = &U.file_space_data; | UserDef_FileSpaceData *sfile_udata = &U.file_space_data; | ||||
| ED_fileselect_set_params(sfile); | ED_fileselect_set_params(sfile); | ||||
| if (!op) { | if (!op) { | ||||
| Show All 16 Lines | |||||
| /** | /** | ||||
| * Update the user-preference data for the file space. In fact, this also contains some | * Update the user-preference data for the file space. In fact, this also contains some | ||||
| * non-FileSelectParams data, but we can safely ignore this. | * non-FileSelectParams data, but we can safely ignore this. | ||||
| * | * | ||||
| * \param temp_win_size: If the browser was opened in a temporary window, | * \param temp_win_size: If the browser was opened in a temporary window, | ||||
| * pass its size here so we can store that in the preferences. Otherwise NULL. | * pass its size here so we can store that in the preferences. Otherwise NULL. | ||||
| */ | */ | ||||
| void ED_fileselect_params_to_userdef(SpaceFile *sfile, int temp_win_size[2]) | void ED_fileselect_params_to_userdef(SpaceFile *sfile, | ||||
| int temp_win_size[2], | |||||
| const bool is_maximized) | |||||
| { | { | ||||
| UserDef_FileSpaceData *sfile_udata_new = &U.file_space_data; | UserDef_FileSpaceData *sfile_udata_new = &U.file_space_data; | ||||
| UserDef_FileSpaceData sfile_udata_old = U.file_space_data; | UserDef_FileSpaceData sfile_udata_old = U.file_space_data; | ||||
| sfile_udata_new->display_type = sfile->params->display; | sfile_udata_new->display_type = sfile->params->display; | ||||
| sfile_udata_new->thumbnail_size = sfile->params->thumbnail_size; | sfile_udata_new->thumbnail_size = sfile->params->thumbnail_size; | ||||
| sfile_udata_new->sort_type = sfile->params->sort; | sfile_udata_new->sort_type = sfile->params->sort; | ||||
| sfile_udata_new->details_flags = sfile->params->details_flags; | sfile_udata_new->details_flags = sfile->params->details_flags; | ||||
| sfile_udata_new->flag = sfile->params->flag & PARAMS_FLAGS_REMEMBERED; | sfile_udata_new->flag = sfile->params->flag & PARAMS_FLAGS_REMEMBERED; | ||||
| if (temp_win_size) { | if (temp_win_size && !is_maximized) { | ||||
| sfile_udata_new->temp_win_sizex = temp_win_size[0]; | sfile_udata_new->temp_win_sizex = temp_win_size[0]; | ||||
| sfile_udata_new->temp_win_sizey = temp_win_size[1]; | sfile_udata_new->temp_win_sizey = temp_win_size[1]; | ||||
| } | } | ||||
| /* Tag prefs as dirty if something has changed. */ | /* Tag prefs as dirty if something has changed. */ | ||||
| if (memcmp(sfile_udata_new, &sfile_udata_old, sizeof(sfile_udata_old)) != 0) { | if (memcmp(sfile_udata_new, &sfile_udata_old, sizeof(sfile_udata_old)) != 0) { | ||||
| U.runtime.is_dirty = true; | U.runtime.is_dirty = true; | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 571 Lines • ▼ Show 20 Lines | |||||
| void ED_fileselect_exit(wmWindowManager *wm, ScrArea *sa, SpaceFile *sfile) | void ED_fileselect_exit(wmWindowManager *wm, ScrArea *sa, SpaceFile *sfile) | ||||
| { | { | ||||
| if (!sfile) { | if (!sfile) { | ||||
| return; | return; | ||||
| } | } | ||||
| if (sfile->op) { | if (sfile->op) { | ||||
| wmWindow *temp_win = WM_window_is_temp_screen(wm->winactive) ? wm->winactive : NULL; | wmWindow *temp_win = WM_window_is_temp_screen(wm->winactive) ? wm->winactive : NULL; | ||||
| if (temp_win) { | |||||
| int win_size[2]; | int win_size[2]; | ||||
| bool is_maximized; | |||||
| if (temp_win) { | ED_fileselect_window_params_get(temp_win, win_size, &is_maximized); | ||||
| /* Get DPI/pixelsize independent size to be stored in preferences. */ | ED_fileselect_params_to_userdef(sfile, win_size, is_maximized); | ||||
| WM_window_set_dpi(temp_win); /* Ensure the DPI is taken from the right window. */ | } | ||||
| win_size[0] = WM_window_pixels_x(temp_win) / UI_DPI_FAC; | else { | ||||
| win_size[1] = WM_window_pixels_y(temp_win) / UI_DPI_FAC; | ED_fileselect_params_to_userdef(sfile, NULL, false); | ||||
| } | } | ||||
| ED_fileselect_params_to_userdef(sfile, temp_win ? win_size : NULL); | |||||
| WM_event_fileselect_event(wm, sfile->op, EVT_FILESELECT_EXTERNAL_CANCEL); | WM_event_fileselect_event(wm, sfile->op, EVT_FILESELECT_EXTERNAL_CANCEL); | ||||
| sfile->op = NULL; | sfile->op = NULL; | ||||
| } | } | ||||
| folderlist_free(sfile->folders_prev); | folderlist_free(sfile->folders_prev); | ||||
| folderlist_free(sfile->folders_next); | folderlist_free(sfile->folders_next); | ||||
| ▲ Show 20 Lines • Show All 45 Lines • Show Last 20 Lines | |||||