diff options
author | Ton Roosendaal <ton@blender.org> | 2009-02-07 13:00:46 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2009-02-07 13:00:46 +0300 |
commit | 19896992ffdfc86e82104511fc254af7c7067a71 (patch) | |
tree | 0bf6974bc18c6240550668a8e59ad6c40532dba0 /source/blender/windowmanager | |
parent | 86f200a510a199cd028ea4dc55071cff6e087788 (diff) |
2.5
- Added back CTRL+X "reload start-up file".
(Original name 'erase all' is a bit misleading, but we can
go over all naming conventions later :)
- Added memfree for triple buffer data.
Diffstat (limited to 'source/blender/windowmanager')
-rw-r--r-- | source/blender/windowmanager/WM_api.h | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_files.c | 20 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_init_exit.c | 2 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_operators.c | 15 | ||||
-rw-r--r-- | source/blender/windowmanager/intern/wm_window.c | 3 |
6 files changed, 32 insertions, 12 deletions
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h index 8840b7f73ab..e30153221a2 100644 --- a/source/blender/windowmanager/WM_api.h +++ b/source/blender/windowmanager/WM_api.h @@ -53,7 +53,7 @@ void WM_main (struct bContext *C); struct wmWindow *WM_window_open (struct bContext *C, struct rcti *rect); /* files */ -int WM_read_homefile (struct bContext *C, int from_memory); +int WM_read_homefile (struct bContext *C, struct wmOperator *op); int WM_write_homefile (struct bContext *C, struct wmOperator *op); void WM_read_file (struct bContext *C, char *name, struct ReportList *reports); void WM_write_file (struct bContext *C, char *target, struct ReportList *reports); diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c index cded03e845e..0b00d955a8a 100644 --- a/source/blender/windowmanager/intern/wm.c +++ b/source/blender/windowmanager/intern/wm.c @@ -118,8 +118,6 @@ void wm_check(bContext *C) ED_screens_initialize(wm); wm->initialized= 1; - - WM_event_add_notifier(C, NC_WINDOW, NULL); } } diff --git a/source/blender/windowmanager/intern/wm_files.c b/source/blender/windowmanager/intern/wm_files.c index 2eb1604895b..7c330843a07 100644 --- a/source/blender/windowmanager/intern/wm_files.c +++ b/source/blender/windowmanager/intern/wm_files.c @@ -74,6 +74,9 @@ #include "BLO_readfile.h" #include "BLO_writefile.h" +#include "RNA_access.h" +#include "RNA_define.h" + #include "ED_datafiles.h" #include "ED_screen.h" #include "ED_util.h" @@ -518,12 +521,9 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) wm_check(C); /* opens window(s), checks keymaps */ // XXX mainwindow_set_filename_to_title(G.main->name); -// countall(); <-- will be listener // XXX sound_initialize_sounds(); -// winqueue_break= 1; /* leave queues everywhere */ - -// XXX if(retval==2) init_userdef_themes(); // in case a userdef is read from regular .blend + if(retval==2) init_userdef_themes(); // in case a userdef is read from regular .blend if (retval!=0) G.relbase_valid = 1; @@ -536,8 +536,8 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) CTX_wm_window_set(C, NULL); /* exits queues */ } -// else if(retval==1) -// XXX BIF_undo_push("Import file"); + else if(retval==1) + BKE_write_undo(C, "Import file"); else if(retval == -1) { if(reports && reports->list.first == NULL) BKE_report(reports, RPT_ERROR, "Cannot read file."); @@ -547,13 +547,14 @@ void WM_read_file(bContext *C, char *name, ReportList *reports) /* called on startup, (context entirely filled with NULLs) */ /* or called for 'Erase All' */ -int WM_read_homefile(bContext *C, int from_memory) +int WM_read_homefile(bContext *C, wmOperator *op) { ListBase wmbase; char tstr[FILE_MAXDIR+FILE_MAXFILE], scestr[FILE_MAXDIR]; char *home= BLI_gethome(); + int from_memory= op?RNA_boolean_get(op->ptr, "factory"):0; int success; - + BLI_clean(home); free_ttfont(); /* still weird... what does it here? */ @@ -601,6 +602,9 @@ int WM_read_homefile(bContext *C, int from_memory) BKE_reset_undo(); BKE_write_undo(C, "original"); /* save current state */ + WM_event_add_notifier(C, NC_WM|ND_FILEREAD, NULL); + CTX_wm_window_set(C, NULL); /* exits queues */ + return success; } diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c index 5fe4639201f..9f56cfa9bd1 100644 --- a/source/blender/windowmanager/intern/wm_init_exit.c +++ b/source/blender/windowmanager/intern/wm_init_exit.c @@ -122,7 +122,7 @@ void WM_init(bContext *C) ED_init_node_butfuncs(); /* get the default database, plus a wm */ - WM_read_homefile(C, 0); + WM_read_homefile(C, NULL); UI_init(); diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c index 3fff6c5aad8..e060169d702 100644 --- a/source/blender/windowmanager/intern/wm_operators.c +++ b/source/blender/windowmanager/intern/wm_operators.c @@ -279,6 +279,19 @@ static void WM_OT_save_homefile(wmOperatorType *ot) ot->poll= WM_operator_winactive; } +static void WM_OT_read_homefile(wmOperatorType *ot) +{ + ot->name= "Reload Start-Up File"; + ot->idname= "WM_OT_read_homefile"; + + ot->invoke= WM_operator_confirm; + ot->exec= WM_read_homefile; + ot->poll= WM_operator_winactive; + + RNA_def_boolean(ot->srna, "factory", 0, "Factory Settings", ""); +} + + /* ********* recent file *********** */ static int recentfile_exec(bContext *C, wmOperator *op) @@ -1145,6 +1158,7 @@ void wm_operatortype_free(void) void wm_operatortype_init(void) { WM_operatortype_append(WM_OT_window_duplicate); + WM_operatortype_append(WM_OT_read_homefile); WM_operatortype_append(WM_OT_save_homefile); WM_operatortype_append(WM_OT_window_fullscreen_toggle); WM_operatortype_append(WM_OT_exit_blender); @@ -1164,6 +1178,7 @@ void wm_window_keymap(wmWindowManager *wm) /* note, this doesn't replace existing keymap items */ WM_keymap_verify_item(keymap, "WM_OT_window_duplicate", WKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + WM_keymap_verify_item(keymap, "WM_OT_read_homefile", XKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_save_homefile", UKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_open_recentfile", OKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "WM_OT_open_mainfile", F1KEY, KM_PRESS, 0, 0); diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c index bf34406b111..e5af93f3dd8 100644 --- a/source/blender/windowmanager/intern/wm_window.c +++ b/source/blender/windowmanager/intern/wm_window.c @@ -112,6 +112,9 @@ void wm_window_free(bContext *C, wmWindow *win) wm_event_free_all(win); wm_subwindows_free(win); + if(win->drawdata) + MEM_freeN(win->drawdata); + wm_ghostwindow_destroy(win); MEM_freeN(win); |