bug fixes for event driven stuff
This commit is contained in:
parent
9513517374
commit
4cdf9a6957
293
4ed.cpp
293
4ed.cpp
|
@ -165,14 +165,14 @@ globalvar Application_Links app_links;
|
|||
#define USE_VARS(n) App_Vars *n = command->vars
|
||||
#define USE_PANEL(n) Panel *n = command->panel
|
||||
#define USE_VIEW(n) View *n = command->view
|
||||
#define USE_FILE(n,v) Editing_File *n = (v)->file
|
||||
#define USE_FILE(n,v) Editing_File *n = (v)->file_data.file
|
||||
#define USE_EXCHANGE(n) Exchange *n = command->exchange
|
||||
|
||||
#define REQ_OPEN_VIEW(n) View *n = command->panel->view; if (view_lock_level(n) > LockLevel_Open) return
|
||||
#define REQ_READABLE_VIEW(n) View *n = command->panel->view; if (view_lock_level(n) > LockLevel_NoWrite) return
|
||||
|
||||
#define REQ_FILE(n,v) Editing_File *n = (v)->file; if (!n) return
|
||||
#define REQ_FILE_HISTORY(n,v) Editing_File *n = (v)->file; if (!n || !n->state.undo.undo.edits) return
|
||||
#define REQ_FILE(n,v) Editing_File *n = (v)->file_data.file; if (!n) return
|
||||
#define REQ_FILE_HISTORY(n,v) Editing_File *n = (v)->file_data.file; if (!n || !n->state.undo.undo.edits) return
|
||||
|
||||
#define COMMAND_DECL(n) internal void command_##n(System_Functions *system, Command_Data *command, Command_Binding binding)
|
||||
|
||||
|
@ -245,8 +245,8 @@ COMMAND_DECL(write_character){
|
|||
|
||||
character = command->key.character;
|
||||
if (character != 0){
|
||||
pos = view->cursor.pos;
|
||||
next_cursor_pos = view->cursor.pos + 1;
|
||||
pos = view->file_data.cursor.pos;
|
||||
next_cursor_pos = view->file_data.cursor.pos + 1;
|
||||
view_replace_range(system, models, view, pos, pos, &character, 1, next_cursor_pos);
|
||||
view_cursor_move(view, next_cursor_pos);
|
||||
}
|
||||
|
@ -302,27 +302,27 @@ COMMAND_DECL(seek_left){
|
|||
i32 pos[4] = {0};
|
||||
|
||||
if (flags & (1)){
|
||||
pos[0] = buffer_seek_whitespace_left(&file->state.buffer, view->cursor.pos);
|
||||
pos[0] = buffer_seek_whitespace_left(&file->state.buffer, view->file_data.cursor.pos);
|
||||
}
|
||||
|
||||
if (flags & (1 << 1)){
|
||||
if (file->state.tokens_complete){
|
||||
pos[1] = seek_token_left(&file->state.token_stack, view->cursor.pos);
|
||||
pos[1] = seek_token_left(&file->state.token_stack, view->file_data.cursor.pos);
|
||||
}
|
||||
else{
|
||||
pos[1] = buffer_seek_whitespace_left(&file->state.buffer, view->cursor.pos);
|
||||
pos[1] = buffer_seek_whitespace_left(&file->state.buffer, view->file_data.cursor.pos);
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & (1 << 2)){
|
||||
pos[2] = buffer_seek_alphanumeric_left(&file->state.buffer, view->cursor.pos);
|
||||
pos[2] = buffer_seek_alphanumeric_left(&file->state.buffer, view->file_data.cursor.pos);
|
||||
if (flags & (1 << 3)){
|
||||
pos[3] = buffer_seek_range_camel_left(&file->state.buffer, view->cursor.pos, pos[2]);
|
||||
pos[3] = buffer_seek_range_camel_left(&file->state.buffer, view->file_data.cursor.pos, pos[2]);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (flags & (1 << 3)){
|
||||
pos[3] = buffer_seek_alphanumeric_or_camel_left(&file->state.buffer, view->cursor.pos);
|
||||
pos[3] = buffer_seek_alphanumeric_or_camel_left(&file->state.buffer, view->file_data.cursor.pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -357,27 +357,27 @@ COMMAND_DECL(seek_right){
|
|||
for (i32 i = 0; i < ArrayCount(pos); ++i) pos[i] = size;
|
||||
|
||||
if (flags & (1)){
|
||||
pos[0] = buffer_seek_whitespace_right(&file->state.buffer, view->cursor.pos);
|
||||
pos[0] = buffer_seek_whitespace_right(&file->state.buffer, view->file_data.cursor.pos);
|
||||
}
|
||||
|
||||
if (flags & (1 << 1)){
|
||||
if (file->state.tokens_complete){
|
||||
pos[1] = seek_token_right(&file->state.token_stack, view->cursor.pos);
|
||||
pos[1] = seek_token_right(&file->state.token_stack, view->file_data.cursor.pos);
|
||||
}
|
||||
else{
|
||||
pos[1] = buffer_seek_whitespace_right(&file->state.buffer, view->cursor.pos);
|
||||
pos[1] = buffer_seek_whitespace_right(&file->state.buffer, view->file_data.cursor.pos);
|
||||
}
|
||||
}
|
||||
|
||||
if (flags & (1 << 2)){
|
||||
pos[2] = buffer_seek_alphanumeric_right(&file->state.buffer, view->cursor.pos);
|
||||
pos[2] = buffer_seek_alphanumeric_right(&file->state.buffer, view->file_data.cursor.pos);
|
||||
if (flags & (1 << 3)){
|
||||
pos[3] = buffer_seek_range_camel_right(&file->state.buffer, view->cursor.pos, pos[2]);
|
||||
pos[3] = buffer_seek_range_camel_right(&file->state.buffer, view->file_data.cursor.pos, pos[2]);
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (flags & (1 << 3)){
|
||||
pos[3] = buffer_seek_alphanumeric_or_camel_right(&file->state.buffer, view->cursor.pos);
|
||||
pos[3] = buffer_seek_alphanumeric_or_camel_right(&file->state.buffer, view->file_data.cursor.pos);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -394,7 +394,7 @@ COMMAND_DECL(seek_whitespace_up){
|
|||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 pos = buffer_seek_whitespace_up(&file->state.buffer, view->cursor.pos);
|
||||
i32 pos = buffer_seek_whitespace_up(&file->state.buffer, view->file_data.cursor.pos);
|
||||
view_cursor_move(view, pos);
|
||||
}
|
||||
|
||||
|
@ -403,7 +403,7 @@ COMMAND_DECL(seek_whitespace_down){
|
|||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 pos = buffer_seek_whitespace_down(&file->state.buffer, view->cursor.pos);
|
||||
i32 pos = buffer_seek_whitespace_down(&file->state.buffer, view->file_data.cursor.pos);
|
||||
view_cursor_move(view, pos);
|
||||
}
|
||||
|
||||
|
@ -413,18 +413,18 @@ COMMAND_DECL(center_view){
|
|||
REQ_FILE(file, view);
|
||||
|
||||
f32 y, h;
|
||||
if (view->unwrapped_lines){
|
||||
y = view->cursor.unwrapped_y;
|
||||
if (view->file_data.unwrapped_lines){
|
||||
y = view->file_data.cursor.unwrapped_y;
|
||||
}
|
||||
else{
|
||||
y = view->cursor.wrapped_y;
|
||||
y = view->file_data.cursor.wrapped_y;
|
||||
}
|
||||
|
||||
h = view_file_height(view);
|
||||
y -= h * .5f;
|
||||
if (y < view->file_scroll.min_y) y = view->file_scroll.min_y;
|
||||
if (y < view->file_data.file_scroll.min_y) y = view->file_data.file_scroll.min_y;
|
||||
|
||||
view->file_scroll.target_y = y;
|
||||
view->file_data.file_scroll.target_y = y;
|
||||
}
|
||||
|
||||
COMMAND_DECL(word_complete){
|
||||
|
@ -471,7 +471,7 @@ COMMAND_DECL(word_complete){
|
|||
}
|
||||
|
||||
if (do_init){
|
||||
word_end = view->cursor.pos;
|
||||
word_end = view->file_data.cursor.pos;
|
||||
word_start = word_end;
|
||||
cursor_pos = word_end - 1;
|
||||
|
||||
|
@ -588,15 +588,13 @@ COMMAND_DECL(word_complete){
|
|||
}
|
||||
|
||||
COMMAND_DECL(set_mark){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
view->mark = (i32)view->cursor.pos;
|
||||
view->file_data.mark = (i32)view->file_data.cursor.pos;
|
||||
}
|
||||
|
||||
COMMAND_DECL(copy){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
@ -622,7 +620,7 @@ COMMAND_DECL(copy){
|
|||
}
|
||||
}
|
||||
|
||||
Range range = make_range(view->cursor.pos, view->mark);
|
||||
Range range = make_range(view->file_data.cursor.pos, view->file_data.mark);
|
||||
if (start_set) range.start = r_start;
|
||||
if (end_set) range.end = r_end;
|
||||
if (range.start < range.end){
|
||||
|
@ -631,7 +629,6 @@ COMMAND_DECL(copy){
|
|||
}
|
||||
|
||||
COMMAND_DECL(cut){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
@ -657,7 +654,7 @@ COMMAND_DECL(cut){
|
|||
}
|
||||
}
|
||||
|
||||
Range range = make_range(view->cursor.pos, view->mark);
|
||||
Range range = make_range(view->file_data.cursor.pos, view->file_data.mark);
|
||||
if (start_set) range.start = r_start;
|
||||
if (end_set) range.end = r_end;
|
||||
if (range.start < range.end){
|
||||
|
@ -666,7 +663,7 @@ COMMAND_DECL(cut){
|
|||
clipboard_copy(system, &models->mem.general, &models->working_set, range, file);
|
||||
view_replace_range(system, models, view, range.start, range.end, 0, 0, next_cursor_pos);
|
||||
|
||||
view->mark = range.start;
|
||||
view->file_data.mark = range.start;
|
||||
view_cursor_move(view, next_cursor_pos);
|
||||
}
|
||||
}
|
||||
|
@ -685,13 +682,13 @@ COMMAND_DECL(paste){
|
|||
view->next_mode.rewrite = 1;
|
||||
|
||||
src = working_set_clipboard_head(&models->working_set);
|
||||
pos_left = view->cursor.pos;
|
||||
pos_left = view->file_data.cursor.pos;
|
||||
|
||||
next_cursor_pos = pos_left+src->size;
|
||||
view_replace_range(system, models, view, pos_left, pos_left, src->str, src->size, next_cursor_pos);
|
||||
|
||||
view_cursor_move(view, next_cursor_pos);
|
||||
view->mark = pos_left;
|
||||
view->file_data.mark = pos_left;
|
||||
|
||||
for (iter = file_view_iter_init(&models->layout, file, 0);
|
||||
file_view_iter_good(iter);
|
||||
|
@ -702,7 +699,6 @@ COMMAND_DECL(paste){
|
|||
}
|
||||
|
||||
COMMAND_DECL(paste_next){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
@ -715,7 +711,7 @@ COMMAND_DECL(paste_next){
|
|||
if (models->working_set.clipboard_size > 0 && view->mode.rewrite == 1){
|
||||
view->next_mode.rewrite = 1;
|
||||
|
||||
range = make_range(view->mark, view->cursor.pos);
|
||||
range = make_range(view->file_data.mark, view->file_data.cursor.pos);
|
||||
src = working_set_clipboard_roll_down(&models->working_set);
|
||||
next_cursor_pos = range.start+src->size;
|
||||
view_replace_range(system,
|
||||
|
@ -723,7 +719,7 @@ COMMAND_DECL(paste_next){
|
|||
src->str, src->size, next_cursor_pos);
|
||||
|
||||
view_cursor_move(view, next_cursor_pos);
|
||||
view->mark = range.start;
|
||||
view->file_data.mark = range.start;
|
||||
|
||||
for (iter = file_view_iter_init(&models->layout, file, 0);
|
||||
file_view_iter_good(iter);
|
||||
|
@ -737,7 +733,6 @@ COMMAND_DECL(paste_next){
|
|||
}
|
||||
|
||||
COMMAND_DECL(delete_range){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
@ -745,18 +740,17 @@ COMMAND_DECL(delete_range){
|
|||
Range range;
|
||||
i32 next_cursor_pos;
|
||||
|
||||
range = make_range(view->cursor.pos, view->mark);
|
||||
range = make_range(view->file_data.cursor.pos, view->file_data.mark);
|
||||
if (range.start < range.end){
|
||||
next_cursor_pos = range.start;
|
||||
Assert(range.end <= buffer_size(&file->state.buffer));
|
||||
view_replace_range(system, models, view, range.start, range.end, 0, 0, next_cursor_pos);
|
||||
view_cursor_move(view, next_cursor_pos);
|
||||
view->mark = range.start;
|
||||
view->file_data.mark = range.start;
|
||||
}
|
||||
}
|
||||
|
||||
COMMAND_DECL(timeline_scrub){
|
||||
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE_HISTORY(file, view);
|
||||
|
||||
|
@ -766,7 +760,6 @@ COMMAND_DECL(timeline_scrub){
|
|||
}
|
||||
|
||||
COMMAND_DECL(undo){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE_HISTORY(file, view);
|
||||
|
@ -933,7 +926,6 @@ COMMAND_DECL(reopen){
|
|||
}
|
||||
|
||||
COMMAND_DECL(save){
|
||||
|
||||
USE_MODELS(models);
|
||||
USE_VIEW(view);
|
||||
USE_FILE(file, view);
|
||||
|
@ -1068,38 +1060,35 @@ COMMAND_DECL(kill_buffer){
|
|||
}
|
||||
|
||||
COMMAND_DECL(toggle_line_wrap){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
Relative_Scrolling scrolling = view_get_relative_scrolling(view);
|
||||
if (view->unwrapped_lines){
|
||||
view->unwrapped_lines = 0;
|
||||
if (view->file_data.unwrapped_lines){
|
||||
view->file_data.unwrapped_lines = 0;
|
||||
file->settings.unwrapped_lines = 0;
|
||||
view->file_scroll.target_x = 0;
|
||||
view->cursor =view_compute_cursor_from_pos(
|
||||
view, view->cursor.pos);
|
||||
view->preferred_x = view->cursor.wrapped_x;
|
||||
view->file_data.file_scroll.target_x = 0;
|
||||
view->file_data.cursor =view_compute_cursor_from_pos(
|
||||
view, view->file_data.cursor.pos);
|
||||
view->file_data.preferred_x = view->file_data.cursor.wrapped_x;
|
||||
}
|
||||
else{
|
||||
view->unwrapped_lines = 1;
|
||||
view->file_data.unwrapped_lines = 1;
|
||||
file->settings.unwrapped_lines = 1;
|
||||
view->cursor =
|
||||
view_compute_cursor_from_pos(view, view->cursor.pos);
|
||||
view->preferred_x = view->cursor.unwrapped_x;
|
||||
view->file_data.cursor =
|
||||
view_compute_cursor_from_pos(view, view->file_data.cursor.pos);
|
||||
view->file_data.preferred_x = view->file_data.cursor.unwrapped_x;
|
||||
}
|
||||
view_set_relative_scrolling(view, scrolling);
|
||||
}
|
||||
|
||||
COMMAND_DECL(toggle_show_whitespace){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
view->show_whitespace = !view->show_whitespace;
|
||||
view->file_data.show_whitespace = !view->file_data.show_whitespace;
|
||||
}
|
||||
|
||||
COMMAND_DECL(toggle_tokens){
|
||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
@ -1118,7 +1107,7 @@ case_change_range(System_Functions *system,
|
|||
Mem_Options *mem, View *view, Editing_File *file,
|
||||
u8 a, u8 z, u8 char_delta){
|
||||
#if BUFFER_EXPERIMENT_SCALPEL <= 0
|
||||
Range range = make_range(view->cursor.pos, view->mark);
|
||||
Range range = make_range(view->file_data.cursor.pos, view->file_data.mark);
|
||||
if (range.start < range.end){
|
||||
Edit_Step step = {};
|
||||
step.type = ED_NORMAL;
|
||||
|
@ -1225,7 +1214,7 @@ COMMAND_DECL(auto_tab_range){
|
|||
}
|
||||
|
||||
if (file->state.token_stack.tokens && file->state.tokens_complete && !file->state.still_lexing){
|
||||
Range range = make_range(view->cursor.pos, view->mark);
|
||||
Range range = make_range(view->file_data.cursor.pos, view->file_data.mark);
|
||||
if (start_set) range.start = r_start;
|
||||
if (end_set) range.end = r_end;
|
||||
view_auto_tab_tokens(system, models, view, range.start, range.end, clear_blank_lines, use_tabs);
|
||||
|
@ -1374,30 +1363,28 @@ COMMAND_DECL(move_left){
|
|||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 pos = view->cursor.pos;
|
||||
i32 pos = view->file_data.cursor.pos;
|
||||
if (pos > 0) --pos;
|
||||
view_cursor_move(view, pos);
|
||||
}
|
||||
|
||||
COMMAND_DECL(move_right){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 size = buffer_size(&file->state.buffer);
|
||||
i32 pos = view->cursor.pos;
|
||||
i32 pos = view->file_data.cursor.pos;
|
||||
if (pos < size) ++pos;
|
||||
view_cursor_move(view, pos);
|
||||
}
|
||||
|
||||
COMMAND_DECL(delete){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 size = buffer_size(&file->state.buffer);
|
||||
i32 cursor_pos = view->cursor.pos;
|
||||
i32 cursor_pos = view->file_data.cursor.pos;
|
||||
if (0 < size && cursor_pos < size){
|
||||
i32 start, end;
|
||||
start = cursor_pos;
|
||||
|
@ -1412,13 +1399,12 @@ COMMAND_DECL(delete){
|
|||
}
|
||||
|
||||
COMMAND_DECL(backspace){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_OPEN_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 size = buffer_size(&file->state.buffer);
|
||||
i32 cursor_pos = view->cursor.pos;
|
||||
i32 cursor_pos = view->file_data.cursor.pos;
|
||||
if (cursor_pos > 0 && cursor_pos <= size){
|
||||
i32 start, end;
|
||||
end = cursor_pos;
|
||||
|
@ -1427,24 +1413,23 @@ COMMAND_DECL(backspace){
|
|||
i32 shift = (end - start);
|
||||
Assert(shift > 0);
|
||||
|
||||
i32 next_cursor_pos = view->cursor.pos - shift;
|
||||
i32 next_cursor_pos = view->file_data.cursor.pos - shift;
|
||||
view_replace_range(system, models, view, start, end, 0, 0, next_cursor_pos);
|
||||
view_cursor_move(view, next_cursor_pos);
|
||||
}
|
||||
}
|
||||
|
||||
COMMAND_DECL(move_up){
|
||||
|
||||
USE_MODELS(models);
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
f32 font_height = (f32)get_font_info(models->font_set, models->global_font.font_id)->height;
|
||||
f32 cy = view_get_cursor_y(view)-font_height;
|
||||
f32 px = view->preferred_x;
|
||||
f32 px = view->file_data.preferred_x;
|
||||
if (cy >= 0){
|
||||
view->cursor = view_compute_cursor_from_xy(view, px, cy);
|
||||
file->state.cursor_pos = view->cursor.pos;
|
||||
view->file_data.cursor = view_compute_cursor_from_xy(view, px, cy);
|
||||
file->state.cursor_pos = view->file_data.cursor.pos;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1456,59 +1441,54 @@ COMMAND_DECL(move_down){
|
|||
|
||||
f32 font_height = (f32)get_font_info(models->font_set, models->global_font.font_id)->height;
|
||||
f32 cy = view_get_cursor_y(view)+font_height;
|
||||
f32 px = view->preferred_x;
|
||||
view->cursor = view_compute_cursor_from_xy(view, px, cy);
|
||||
file->state.cursor_pos = view->cursor.pos;
|
||||
f32 px = view->file_data.preferred_x;
|
||||
view->file_data.cursor = view_compute_cursor_from_xy(view, px, cy);
|
||||
file->state.cursor_pos = view->file_data.cursor.pos;
|
||||
}
|
||||
|
||||
COMMAND_DECL(seek_end_of_line){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 pos = view_find_end_of_line(view, view->cursor.pos);
|
||||
i32 pos = view_find_end_of_line(view, view->file_data.cursor.pos);
|
||||
view_cursor_move(view, pos);
|
||||
}
|
||||
|
||||
COMMAND_DECL(seek_beginning_of_line){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
|
||||
i32 pos = view_find_beginning_of_line(view, view->cursor.pos);
|
||||
i32 pos = view_find_beginning_of_line(view, view->file_data.cursor.pos);
|
||||
view_cursor_move(view, pos);
|
||||
}
|
||||
|
||||
COMMAND_DECL(page_down){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
|
||||
f32 height = view_file_height(view);
|
||||
f32 max_target_y = view->file_scroll.max_y;
|
||||
f32 max_target_y = view->file_data.file_scroll.max_y;
|
||||
|
||||
view->file_scroll.target_y += height;
|
||||
if (view->file_scroll.target_y > max_target_y) view->file_scroll.target_y = max_target_y;
|
||||
view->file_data.file_scroll.target_y += height;
|
||||
if (view->file_data.file_scroll.target_y > max_target_y) view->file_data.file_scroll.target_y = max_target_y;
|
||||
|
||||
view->cursor = view_compute_cursor_from_xy(
|
||||
view, 0, view->file_scroll.target_y + (height - view->font_height)*.5f);
|
||||
view->file_data.cursor = view_compute_cursor_from_xy(
|
||||
view, 0, view->file_data.file_scroll.target_y + (height - view->font_height)*.5f);
|
||||
}
|
||||
|
||||
COMMAND_DECL(page_up){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
|
||||
f32 height = view_file_height(view);
|
||||
f32 min_target_y = view->file_scroll.min_y;
|
||||
f32 min_target_y = view->file_data.file_scroll.min_y;
|
||||
|
||||
view->file_scroll.target_y -= height;
|
||||
if (view->file_scroll.target_y < min_target_y) view->file_scroll.target_y = min_target_y;
|
||||
view->file_data.file_scroll.target_y -= height;
|
||||
if (view->file_data.file_scroll.target_y < min_target_y) view->file_data.file_scroll.target_y = min_target_y;
|
||||
|
||||
view->cursor = view_compute_cursor_from_xy(
|
||||
view, 0, view->file_scroll.target_y + (height - view->font_height)*.5f);
|
||||
view->file_data.cursor = view_compute_cursor_from_xy(
|
||||
view, 0, view->file_data.file_scroll.target_y + (height - view->font_height)*.5f);
|
||||
}
|
||||
|
||||
COMMAND_DECL(open_color_tweaker){
|
||||
|
||||
USE_VIEW(view);
|
||||
USE_MODELS(models);
|
||||
|
||||
|
@ -1516,7 +1496,6 @@ COMMAND_DECL(open_color_tweaker){
|
|||
}
|
||||
|
||||
COMMAND_DECL(open_config){
|
||||
|
||||
USE_VIEW(view);
|
||||
USE_MODELS(models);
|
||||
|
||||
|
@ -1524,7 +1503,6 @@ COMMAND_DECL(open_config){
|
|||
}
|
||||
|
||||
COMMAND_DECL(open_menu){
|
||||
|
||||
USE_VIEW(view);
|
||||
USE_MODELS(models);
|
||||
|
||||
|
@ -1532,33 +1510,29 @@ COMMAND_DECL(open_menu){
|
|||
}
|
||||
|
||||
COMMAND_DECL(close_minor_view){
|
||||
|
||||
USE_VIEW(view);
|
||||
USE_MODELS(models);
|
||||
|
||||
Command_Map *map = &models->map_top;
|
||||
if (view->file){
|
||||
map = app_get_map(models, view->file->settings.base_map_id);
|
||||
if (view->file_data.file){
|
||||
map = app_get_map(models, view->file_data.file->settings.base_map_id);
|
||||
}
|
||||
view_show_file(view, map);
|
||||
}
|
||||
|
||||
COMMAND_DECL(cursor_mark_swap){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
|
||||
i32 pos = view->cursor.pos;
|
||||
view_cursor_move(view, view->mark);
|
||||
view->mark = pos;
|
||||
i32 pos = view->file_data.cursor.pos;
|
||||
view_cursor_move(view, view->file_data.mark);
|
||||
view->file_data.mark = pos;
|
||||
}
|
||||
|
||||
COMMAND_DECL(user_callback){
|
||||
|
||||
if (binding.custom) binding.custom(&app_links);
|
||||
}
|
||||
|
||||
COMMAND_DECL(set_settings){
|
||||
|
||||
REQ_READABLE_VIEW(view);
|
||||
REQ_FILE(file, view);
|
||||
USE_MODELS(models);
|
||||
|
@ -1587,29 +1561,29 @@ COMMAND_DECL(set_settings){
|
|||
case par_wrap_lines:
|
||||
{
|
||||
int v = dynamic_to_bool(¶m->param.value);
|
||||
if (view->unwrapped_lines){
|
||||
if (view->file_data.unwrapped_lines){
|
||||
if (v){
|
||||
view->unwrapped_lines = 0;
|
||||
view->file_data.unwrapped_lines = 0;
|
||||
file->settings.unwrapped_lines = 0;
|
||||
|
||||
if (!file->state.is_loading){
|
||||
Relative_Scrolling scrolling = view_get_relative_scrolling(view);
|
||||
view->file_scroll.target_x = 0;
|
||||
view->cursor =
|
||||
view_compute_cursor_from_pos(view, view->cursor.pos);
|
||||
view->file_data.file_scroll.target_x = 0;
|
||||
view->file_data.cursor =
|
||||
view_compute_cursor_from_pos(view, view->file_data.cursor.pos);
|
||||
view_set_relative_scrolling(view, scrolling);
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
if (!v){
|
||||
view->unwrapped_lines = 1;
|
||||
view->file_data.unwrapped_lines = 1;
|
||||
file->settings.unwrapped_lines = 1;
|
||||
|
||||
if (!file->state.is_loading){
|
||||
Relative_Scrolling scrolling = view_get_relative_scrolling(view);
|
||||
view->cursor =
|
||||
view_compute_cursor_from_pos(view, view->cursor.pos);
|
||||
view->file_data.cursor =
|
||||
view_compute_cursor_from_pos(view, view->file_data.cursor.pos);
|
||||
view_set_relative_scrolling(view, scrolling);
|
||||
}
|
||||
}
|
||||
|
@ -1805,17 +1779,17 @@ COMMAND_DECL(command_line){
|
|||
{
|
||||
Temp_Memory temp;
|
||||
Range range;
|
||||
Editing_File *view_file;
|
||||
Editing_File *file2;
|
||||
i32 size;
|
||||
|
||||
temp = begin_temp_memory(part);
|
||||
if (!script){
|
||||
view_file = view->file;
|
||||
if (view_file){
|
||||
range = make_range(view->cursor.pos, view->mark);
|
||||
file2 = view->file_data.file;
|
||||
if (file2){
|
||||
range = make_range(view->file_data.cursor.pos, view->file_data.mark);
|
||||
size = range.end - range.start;
|
||||
script = push_array(part, char, size + 1);
|
||||
buffer_stringify(&view_file->state.buffer, range.start, range.end, script);
|
||||
buffer_stringify(&file2->state.buffer, range.start, range.end, script);
|
||||
script[size] = 0;
|
||||
}
|
||||
else{
|
||||
|
@ -1883,11 +1857,11 @@ fill_view_summary(View_Summary *view, View *vptr, Live_Views *live_set, Working_
|
|||
view->exists = 1;
|
||||
view->view_id = (int)(vptr - live_set->views) + 1;
|
||||
view->line_height = vptr->font_height;
|
||||
view->unwrapped_lines = vptr->unwrapped_lines;
|
||||
view->unwrapped_lines = vptr->file_data.unwrapped_lines;
|
||||
|
||||
if (vptr->file){
|
||||
if (vptr->file_data.file){
|
||||
lock_level = view_lock_level(vptr);
|
||||
buffer_id = vptr->file->id.id;
|
||||
buffer_id = vptr->file_data.file->id.id;
|
||||
|
||||
if (lock_level <= 0){
|
||||
view->buffer_id = buffer_id;
|
||||
|
@ -1910,9 +1884,9 @@ fill_view_summary(View_Summary *view, View *vptr, Live_Views *live_set, Working_
|
|||
view->hidden_buffer_id = 0;
|
||||
}
|
||||
|
||||
view->mark = view_compute_cursor_from_pos(vptr, vptr->mark);
|
||||
view->cursor = vptr->cursor;
|
||||
view->preferred_x = vptr->preferred_x;
|
||||
view->mark = view_compute_cursor_from_pos(vptr, vptr->file_data.mark);
|
||||
view->cursor = vptr->file_data.cursor;
|
||||
view->preferred_x = vptr->file_data.preferred_x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2028,7 +2002,7 @@ extern "C"{
|
|||
Editing_File *file;
|
||||
|
||||
if (view_lock_level(view) <= LockLevel_Open){
|
||||
file = view->file;
|
||||
file = view->file_data.file;
|
||||
if (file){
|
||||
fill_buffer_summary(&buffer, file, &cmd->models->working_set);
|
||||
}
|
||||
|
@ -2344,18 +2318,18 @@ extern "C"{
|
|||
view_id = view->view_id - 1;
|
||||
if (view_id >= 0 && view_id < live_set->max){
|
||||
vptr = live_set->views + view_id;
|
||||
file = vptr->file;
|
||||
file = vptr->file_data.file;
|
||||
if (file && !file->state.is_loading){
|
||||
result = 1;
|
||||
if (seek.type == buffer_seek_line_char && seek.character <= 0){
|
||||
seek.character = 1;
|
||||
}
|
||||
vptr->cursor = view_compute_cursor(vptr, seek);
|
||||
vptr->file_data.cursor = view_compute_cursor(vptr, seek);
|
||||
if (set_preferred_x){
|
||||
vptr->preferred_x = view_get_cursor_x(vptr);
|
||||
vptr->file_data.preferred_x = view_get_cursor_x(vptr);
|
||||
}
|
||||
fill_view_summary(view, vptr, live_set, &cmd->models->working_set);
|
||||
file->state.cursor_pos = vptr->cursor.pos;
|
||||
file->state.cursor_pos = vptr->file_data.cursor.pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2379,10 +2353,10 @@ extern "C"{
|
|||
result = 1;
|
||||
if (seek.type != buffer_seek_pos){
|
||||
cursor = view_compute_cursor(vptr, seek);
|
||||
vptr->mark = cursor.pos;
|
||||
vptr->file_data.mark = cursor.pos;
|
||||
}
|
||||
else{
|
||||
vptr->mark = seek.pos;
|
||||
vptr->file_data.mark = seek.pos;
|
||||
}
|
||||
fill_view_summary(view, vptr, live_set, &cmd->models->working_set);
|
||||
}
|
||||
|
@ -2408,7 +2382,7 @@ extern "C"{
|
|||
view_set_temp_highlight(vptr, start, end);
|
||||
}
|
||||
else{
|
||||
vptr->show_temp_highlight = 0;
|
||||
vptr->file_data.show_temp_highlight = 0;
|
||||
}
|
||||
fill_view_summary(view, vptr, live_set, &cmd->models->working_set);
|
||||
}
|
||||
|
@ -2438,7 +2412,7 @@ extern "C"{
|
|||
|
||||
if (file){
|
||||
result = 1;
|
||||
if (file != vptr->file){
|
||||
if (file != vptr->file_data.file){
|
||||
view_set_file(vptr, file, models, cmd->system,
|
||||
models->hooks[hook_open_file], &app_links);
|
||||
}
|
||||
|
@ -3488,6 +3462,7 @@ update_cli_handle_with_file(System_Functions *system, Models *models,
|
|||
|
||||
App_Step_Sig(app_step){
|
||||
Application_Step_Result app_result = *result;
|
||||
app_result.animating = 0;
|
||||
|
||||
App_Vars *vars = (App_Vars*)memory->vars_memory;
|
||||
Models *models = &vars->models;
|
||||
|
@ -3721,25 +3696,6 @@ App_Step_Sig(app_step){
|
|||
if (i < models->layout.panel_count){
|
||||
view_file_in_panel(cmd, panel, models->message_buffer);
|
||||
}
|
||||
|
||||
{
|
||||
String welcome = make_lit_string(
|
||||
"Welcome to " VERSION "\n"
|
||||
"If you're new to 4coder there's no tutorial yet :(\n"
|
||||
"you can use the key combo control + o to look for a file\n"
|
||||
"and if you load README.txt you'll find all the key combos there are.\n"
|
||||
"\n"
|
||||
"Newest features:\n"
|
||||
"-The file count limit is over 8 million now\n"
|
||||
"-File equality is handled better so renamings (such as 'subst') are safe now\n"
|
||||
"-This buffer will report events including errors that happen in 4coder\n"
|
||||
"-Super users can post their own messages here with app->print_message\n"
|
||||
"-<ctrl e> centers view on cursor; cmdid_center_view in customization API\n"
|
||||
"-Set font size on command line with -f N, N = 16 by default\n\n"
|
||||
);
|
||||
|
||||
do_feedback_message(system, models, welcome);
|
||||
}
|
||||
}
|
||||
|
||||
// NOTE(allen): try to abort the command corroutine if we are shutting down
|
||||
|
@ -3968,7 +3924,9 @@ App_Step_Sig(app_step){
|
|||
view = panel->view;
|
||||
active = (panel == cmd->panel);
|
||||
input = (active)?(active_input):(dead_input);
|
||||
step_file_view(system, view, active_view, input);
|
||||
if (step_file_view(system, view, active_view, input)){
|
||||
app_result.animating = 1;
|
||||
}
|
||||
}
|
||||
|
||||
for (dll_items(panel, used_panels)){
|
||||
|
@ -3982,6 +3940,17 @@ App_Step_Sig(app_step){
|
|||
app_result.animating = 1;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO(allen): This is a pretty big hack at the moment.
|
||||
for (dll_items(panel, used_panels)){
|
||||
view = panel->view;
|
||||
if (view->showing_ui == VUI_None){
|
||||
gui_get_scroll_vars(&view->gui_target, view->showing_ui, &view->file_data.file_scroll);
|
||||
}
|
||||
else{
|
||||
gui_get_scroll_vars(&view->gui_target, view->showing_ui, &view->gui_scroll);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
update_command_data(vars, cmd);
|
||||
|
@ -4046,6 +4015,26 @@ App_Step_Sig(app_step){
|
|||
|
||||
update_command_data(vars, cmd);
|
||||
|
||||
// NOTE(allen): initialize message
|
||||
if (first_step){
|
||||
String welcome = make_lit_string(
|
||||
"Welcome to " VERSION "\n"
|
||||
"If you're new to 4coder there's no tutorial yet :(\n"
|
||||
"you can use the key combo control + o to look for a file\n"
|
||||
"and if you load README.txt you'll find all the key combos there are.\n"
|
||||
"\n"
|
||||
"Newest features:\n"
|
||||
"-The file count limit is over 8 million now\n"
|
||||
"-File equality is handled better so renamings (such as 'subst') are safe now\n"
|
||||
"-This buffer will report events including errors that happen in 4coder\n"
|
||||
"-Super users can post their own messages here with app->print_message\n"
|
||||
"-<ctrl e> centers view on cursor; cmdid_center_view in customization API\n"
|
||||
"-Set font size on command line with -f N, N = 16 by default\n\n"
|
||||
);
|
||||
|
||||
do_feedback_message(system, models, welcome);
|
||||
}
|
||||
|
||||
// NOTE(allen): panel resizing
|
||||
switch (vars->state){
|
||||
case APP_STATE_EDIT:
|
||||
|
@ -4318,7 +4307,7 @@ App_Step_Sig(app_step){
|
|||
// TODO(allen): deduplicate
|
||||
Editing_File *file = 0;
|
||||
if (panel){
|
||||
file = panel->view->file;
|
||||
file = panel->view->file_data.file;
|
||||
}
|
||||
else if (string.str && string.size > 0){
|
||||
file = working_set_lookup_file(working_set, string);
|
||||
|
@ -4340,7 +4329,7 @@ App_Step_Sig(app_step){
|
|||
if (panel){
|
||||
View *view = panel->view;
|
||||
Assert(view);
|
||||
file = view->file;
|
||||
file = view->file_data.file;
|
||||
}
|
||||
else{
|
||||
file = working_set_lookup_file(working_set, string);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -614,6 +614,8 @@ gui_id_scrollbar_bottom(){
|
|||
return(id);
|
||||
}
|
||||
|
||||
// TODO(allen): Rethink this a little, seems like there are two separate things we want to do here:
|
||||
// Getting the updated scroll vars, and telling the user when scrolling actions occur.
|
||||
internal b32
|
||||
gui_get_scroll_vars(GUI_Target *target, u32 scroll_id, GUI_Scroll_Vars *vars_out){
|
||||
b32 result = 0;
|
||||
|
|
|
@ -121,6 +121,7 @@ struct Win32_Vars{
|
|||
|
||||
Win32_Input_Chunk input_chunk;
|
||||
b32 lctrl_lalt_is_altgr;
|
||||
b32 got_useful_event;
|
||||
|
||||
HCURSOR cursor_ibeam;
|
||||
HCURSOR cursor_arrow;
|
||||
|
@ -1189,6 +1190,7 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
case WM_KEYDOWN:
|
||||
case WM_KEYUP:
|
||||
{
|
||||
win32vars.got_useful_event = 1;
|
||||
switch (wParam){
|
||||
case VK_CONTROL:case VK_LCONTROL:case VK_RCONTROL:
|
||||
case VK_MENU:case VK_LMENU:case VK_RMENU:
|
||||
|
@ -1199,8 +1201,6 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
controls = &win32vars.input_chunk.pers.controls;
|
||||
control_keys = win32vars.input_chunk.pers.control_keys;
|
||||
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
|
||||
b8 down = ((lParam & Bit_31)?(0):(1));
|
||||
b8 is_right = ((lParam & Bit_24)?(1):(0));
|
||||
|
||||
|
@ -1238,7 +1238,6 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
control_keys[MDFR_CONTROL_INDEX] = ctrl;
|
||||
control_keys[MDFR_ALT_INDEX] = alt;
|
||||
}
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
default:
|
||||
|
@ -1254,7 +1253,6 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
b8 *control_keys = 0;
|
||||
i32 control_keys_size = 0;
|
||||
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
if (!previous_state){
|
||||
count = &win32vars.input_chunk.trans.key_data.press_count;
|
||||
data = win32vars.input_chunk.trans.key_data.press;
|
||||
|
@ -1320,26 +1318,28 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
++(*count);
|
||||
}
|
||||
}
|
||||
system_release_lock(INPUT_LOCK);
|
||||
|
||||
result = DefWindowProc(hwnd, uMsg, wParam, lParam);
|
||||
}
|
||||
}break;
|
||||
|
||||
case WM_INPUT:
|
||||
|
||||
|
||||
case WM_MOUSEMOVE:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.input_chunk.pers.mouse_x = LOWORD(lParam);
|
||||
win32vars.input_chunk.pers.mouse_y = HIWORD(lParam);
|
||||
system_release_lock(INPUT_LOCK);
|
||||
i32 new_x = LOWORD(lParam);
|
||||
i32 new_y = HIWORD(lParam);
|
||||
|
||||
if (new_x != win32vars.input_chunk.pers.mouse_x
|
||||
|| new_y != win32vars.input_chunk.pers.mouse_y){
|
||||
win32vars.input_chunk.pers.mouse_x = new_x;
|
||||
win32vars.input_chunk.pers.mouse_y = new_y;
|
||||
|
||||
win32vars.got_useful_event = 1;
|
||||
}
|
||||
}break;
|
||||
|
||||
case WM_MOUSEWHEEL:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
i16 rotation = GET_WHEEL_DELTA_WPARAM(wParam);
|
||||
if (rotation > 0){
|
||||
win32vars.input_chunk.trans.mouse_wheel = 1;
|
||||
|
@ -1347,57 +1347,51 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
else{
|
||||
win32vars.input_chunk.trans.mouse_wheel = -1;
|
||||
}
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_LBUTTONDOWN:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
win32vars.input_chunk.trans.mouse_l_press = 1;
|
||||
win32vars.input_chunk.pers.mouse_l = 1;
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_RBUTTONDOWN:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
win32vars.input_chunk.trans.mouse_r_press = 1;
|
||||
win32vars.input_chunk.pers.mouse_r = 1;
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_LBUTTONUP:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
win32vars.input_chunk.trans.mouse_l_release = 1;
|
||||
win32vars.input_chunk.pers.mouse_l = 0;
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_RBUTTONUP:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
win32vars.input_chunk.trans.mouse_r_release = 1;
|
||||
win32vars.input_chunk.pers.mouse_r = 0;
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_KILLFOCUS:
|
||||
case WM_SETFOCUS:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
win32vars.input_chunk.pers.mouse_l = 0;
|
||||
win32vars.input_chunk.pers.mouse_r = 0;
|
||||
|
||||
b8 *control_keys = win32vars.input_chunk.pers.control_keys;
|
||||
for (int i = 0; i < MDFR_INDEX_COUNT; ++i) control_keys[i] = 0;
|
||||
win32vars.input_chunk.pers.controls = {};
|
||||
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_SIZE:
|
||||
{
|
||||
win32vars.got_useful_event = 1;
|
||||
if (win32vars.target.handle){
|
||||
i32 new_width = LOWORD(lParam);
|
||||
i32 new_height = HIWORD(lParam);
|
||||
|
@ -1408,11 +1402,11 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
|
||||
case WM_PAINT:
|
||||
{
|
||||
win32vars.got_useful_event = 1;
|
||||
PAINTSTRUCT ps;
|
||||
HDC hdc = BeginPaint(hwnd, &ps);
|
||||
Win32RedrawScreen(hdc);
|
||||
EndPaint(hwnd, &ps);
|
||||
|
||||
}break;
|
||||
|
||||
case WM_4coder_PAINT:
|
||||
|
@ -1443,9 +1437,8 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
case WM_CLOSE: // NOTE(allen): I expect WM_CLOSE not WM_DESTROY
|
||||
case WM_DESTROY:
|
||||
{
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.got_useful_event = 1;
|
||||
win32vars.input_chunk.trans.trying_to_kill = 1;
|
||||
system_release_lock(INPUT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_4coder_LOAD_FONT:
|
||||
|
@ -1477,6 +1470,11 @@ Win32Callback(HWND hwnd, UINT uMsg,
|
|||
system_release_lock(FONT_LOCK);
|
||||
}break;
|
||||
|
||||
case WM_4coder_ANIMATE:
|
||||
case WM_4coder_EVENT_COMPLETE:
|
||||
win32vars.got_useful_event = 1;
|
||||
break;
|
||||
|
||||
default:
|
||||
{
|
||||
result = DefWindowProc(hwnd, uMsg, wParam, lParam);
|
||||
|
@ -1489,10 +1487,8 @@ internal void
|
|||
UpdateStep(){
|
||||
i64 timer_start = system_time();
|
||||
|
||||
system_acquire_lock(INPUT_LOCK);
|
||||
Win32_Input_Chunk input_chunk = win32vars.input_chunk;
|
||||
win32vars.input_chunk.trans = {};
|
||||
system_release_lock(INPUT_LOCK);
|
||||
|
||||
input_chunk.pers.control_keys[MDFR_CAPS_INDEX] = GetKeyState(VK_CAPITAL) & 0x1;
|
||||
|
||||
|
@ -1599,7 +1595,7 @@ UpdateStep(){
|
|||
else{
|
||||
file->flags |= FEx_Save_Failed;
|
||||
}
|
||||
PostMessage(0, WM_4coder_EVENT_COMPLETE, 0, 0);
|
||||
PostMessage(win32vars.window_handle, WM_4coder_EVENT_COMPLETE, 0, 0);
|
||||
}
|
||||
|
||||
if (file->flags & FEx_Request){
|
||||
|
@ -1615,7 +1611,7 @@ UpdateStep(){
|
|||
file->data = sysfile.data;
|
||||
file->size = sysfile.size;
|
||||
}
|
||||
PostMessage(0, WM_4coder_EVENT_COMPLETE, 0, 0);
|
||||
PostMessage(win32vars.window_handle, WM_4coder_EVENT_COMPLETE, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1653,7 +1649,7 @@ UpdateStep(){
|
|||
timer_start = system_time();
|
||||
|
||||
if (result.animating){
|
||||
PostMessage(0, WM_4coder_ANIMATE, 0, 0);
|
||||
PostMessage(win32vars.window_handle, WM_4coder_ANIMATE, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2034,29 +2030,28 @@ int main(int argc, char **argv){
|
|||
|
||||
MSG msg;
|
||||
for (;win32vars.input_chunk.pers.keep_playing;){
|
||||
if (GetMessage(&msg, 0, 0, 0)){
|
||||
if (msg.message == WM_QUIT){
|
||||
//system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.input_chunk.pers.keep_playing = 0;
|
||||
//system_release_lock(INPUT_LOCK);
|
||||
}else{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
|
||||
while (PeekMessage(&msg, 0, 0, 0, 1)){
|
||||
win32vars.got_useful_event = 0;
|
||||
for (;win32vars.got_useful_event == 0;){
|
||||
if (GetMessage(&msg, 0, 0, 0)){
|
||||
if (msg.message == WM_QUIT){
|
||||
//system_acquire_lock(INPUT_LOCK);
|
||||
win32vars.input_chunk.pers.keep_playing = 0;
|
||||
//system_release_lock(INPUT_LOCK);
|
||||
}else{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateStep();
|
||||
}
|
||||
|
||||
while (PeekMessage(&msg, 0, 0, 0, 1)){
|
||||
if (msg.message == WM_QUIT){
|
||||
win32vars.input_chunk.pers.keep_playing = 0;
|
||||
}else{
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
}
|
||||
|
||||
UpdateStep();
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in New Issue