Remove View_Summary from core API
parent
18b755c626
commit
3911eb2197
|
@ -646,41 +646,6 @@ STRUCT Marker{
|
|||
};
|
||||
|
||||
|
||||
/* DOC(View_Summary acts as a handle to a view and describes the state of the view.)
|
||||
DOC_SEE(Access_Flag)
|
||||
DOC_SEE(Full_Cursor)
|
||||
DOC_SEE(GUI_Scroll_Vars) */
|
||||
STRUCT View_Summary{
|
||||
/* DOC(This field indicates whether the View_Summary describes a view that is open in 4coder. When this field is false the summary is referred to as a "null summary". ) */
|
||||
b32 exists;
|
||||
/* DOC(This field is the id of the associated view. If this is a null summary then view_id is 0. ) */
|
||||
i32 view_id;
|
||||
/* DOC(Then this is the id of the buffer this view currently sees.) */
|
||||
i32 buffer_id;
|
||||
/* DOC(This field contains flags describing the protection status of the view.) */
|
||||
Access_Flag lock_flags;
|
||||
|
||||
/* DOC(This describes the position of the cursor.) */
|
||||
Full_Cursor cursor;
|
||||
/* DOC(This describes the position of the mark.) */
|
||||
Full_Cursor mark;
|
||||
/* DOC(This is the x position that is maintained in vertical navigation.) */
|
||||
float preferred_x;
|
||||
/* DOC(This specifies the height of a line rendered in the view.) */
|
||||
float line_height;
|
||||
/* DOC(This indicates that the view is set to render with unwrapped lines.) */
|
||||
b32 unwrapped_lines;
|
||||
/* DOC(This indicates that the view is set to highlight white space.) */
|
||||
b32 show_whitespace;
|
||||
|
||||
/* DOC(This describes the screen position in which this view is displayed.) */
|
||||
i32_Rect view_region;
|
||||
/* DOC(TODO) */
|
||||
i32_Rect render_region;
|
||||
/* DOC(This describes the scrolling position inside the view.) */
|
||||
GUI_Scroll_Vars scroll_vars;
|
||||
};
|
||||
|
||||
/* DOC(The enumeration of types of managed objects.) */
|
||||
ENUM(i32, Managed_Object_Type)
|
||||
{
|
||||
|
@ -830,8 +795,8 @@ STRUCT Query_Bar_Ptr_Array{
|
|||
i32 count;
|
||||
};
|
||||
|
||||
TYPEDEF_FUNC void UI_Quit_Function_Type(struct Application_Links *app, View_Summary view);
|
||||
#define UI_QUIT_FUNCTION(name) void name(struct Application_Links *app, View_Summary view)
|
||||
TYPEDEF_FUNC void UI_Quit_Function_Type(struct Application_Links *app, View_ID view);
|
||||
#define UI_QUIT_FUNCTION(name) void name(struct Application_Links *app, View_ID view)
|
||||
|
||||
/*
|
||||
DOC(Theme_Color stores a style tag/color pair, for the purpose of setting and getting colors in the theme.)
|
||||
|
|
|
@ -57,6 +57,42 @@ get_buffer_summary(Application_Links *app, Buffer_ID buffer_id, Access_Flag acce
|
|||
return(result);
|
||||
}
|
||||
|
||||
static b32
|
||||
get_view_summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view){
|
||||
b32 result = false;
|
||||
if (view_exists(app, view_id)){
|
||||
Buffer_ID buffer = 0;
|
||||
if (view_get_buffer(app, view_id, access, &buffer)){
|
||||
result = true;
|
||||
|
||||
Face_ID face_id = 0;
|
||||
get_face_id(app, buffer, &face_id);
|
||||
Face_Metrics metrics = {};
|
||||
get_face_metrics(app, face_id, &metrics);
|
||||
|
||||
view->exists = true;
|
||||
view->view_id = view_id;
|
||||
view->line_height = metrics.line_height;
|
||||
buffer_get_setting(app, buffer, BufferSetting_WrapLine, &view->unwrapped_lines);
|
||||
view->unwrapped_lines = !view->unwrapped_lines;
|
||||
view_get_setting(app, view_id, ViewSetting_ShowWhitespace, &view->show_whitespace);
|
||||
view->buffer_id = buffer;
|
||||
i32 pos = 0;
|
||||
view_get_mark_pos(app, view_id, &pos);
|
||||
view_compute_cursor(app, view_id, seek_pos(pos), &view->mark);
|
||||
view_get_cursor_pos(app, view_id, &pos);
|
||||
view_compute_cursor(app, view_id, seek_pos(pos), &view->cursor);
|
||||
view_get_preferred_x(app, view_id, &view->preferred_x);
|
||||
Rect_f32 screen_rect = {};
|
||||
view_get_screen_rect(app, view_id, &screen_rect);
|
||||
view->view_region = screen_rect;
|
||||
view->render_region = f32R(0.f, 0.f, rect_width(screen_rect), rect_height(screen_rect));
|
||||
view_get_scroll_vars(app, view_id, &view->scroll_vars);
|
||||
}
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
static b32
|
||||
exec_system_command(Application_Links *app, View_Summary *view, Buffer_Identifier buffer_id,
|
||||
char *path, int32_t path_len, char *command, i32 command_len, Command_Line_Interface_Flag flags){
|
||||
|
|
|
@ -65,6 +65,41 @@ STRUCT Buffer_Summary{
|
|||
b32 unwrapped_lines;
|
||||
};
|
||||
|
||||
/* DOC(View_Summary acts as a handle to a view and describes the state of the view.)
|
||||
DOC_SEE(Access_Flag)
|
||||
DOC_SEE(Full_Cursor)
|
||||
DOC_SEE(GUI_Scroll_Vars) */
|
||||
STRUCT View_Summary{
|
||||
/* DOC(This field indicates whether the View_Summary describes a view that is open in 4coder. When this field is false the summary is referred to as a "null summary". ) */
|
||||
b32 exists;
|
||||
/* DOC(This field is the id of the associated view. If this is a null summary then view_id is 0. ) */
|
||||
i32 view_id;
|
||||
/* DOC(Then this is the id of the buffer this view currently sees.) */
|
||||
i32 buffer_id;
|
||||
/* DOC(This field contains flags describing the protection status of the view.) */
|
||||
Access_Flag lock_flags;
|
||||
|
||||
/* DOC(This describes the position of the cursor.) */
|
||||
Full_Cursor cursor;
|
||||
/* DOC(This describes the position of the mark.) */
|
||||
Full_Cursor mark;
|
||||
/* DOC(This is the x position that is maintained in vertical navigation.) */
|
||||
f32 preferred_x;
|
||||
/* DOC(This specifies the height of a line rendered in the view.) */
|
||||
f32 line_height;
|
||||
/* DOC(This indicates that the view is set to render with unwrapped lines.) */
|
||||
b32 unwrapped_lines;
|
||||
/* DOC(This indicates that the view is set to highlight white space.) */
|
||||
b32 show_whitespace;
|
||||
|
||||
/* DOC(This describes the screen position in which this view is displayed.) */
|
||||
Rect_f32 view_region;
|
||||
/* DOC(TODO) */
|
||||
Rect_f32 render_region;
|
||||
/* DOC(This describes the scrolling position inside the view.) */
|
||||
GUI_Scroll_Vars scroll_vars;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// BOTTOM
|
||||
|
|
|
@ -377,7 +377,7 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View
|
|||
}
|
||||
|
||||
{
|
||||
Rect_f32 r_cursor = f32R(view.render_region);
|
||||
Rect_f32 r_cursor = view.render_region;
|
||||
|
||||
// NOTE(allen): Filebar
|
||||
{
|
||||
|
@ -724,7 +724,7 @@ default_buffer_render_caller(Application_Links *app, Frame_Info frame_info, View
|
|||
history_animation_dt[wrapped_index] = frame_info.animation_dt;
|
||||
history_frame_index[wrapped_index] = frame_info.index;
|
||||
|
||||
Rect_f32 hud_rect = f32R(view.render_region);
|
||||
Rect_f32 hud_rect = view.render_region;
|
||||
hud_rect.y0 = hud_rect.y1 - view.line_height*(f32)(history_depth);
|
||||
draw_rectangle(app, hud_rect, 0xFF000000);
|
||||
draw_rectangle_outline(app, hud_rect, 0xFFFFFFFF);
|
||||
|
@ -860,7 +860,7 @@ static void
|
|||
default_ui_render_caller(Application_Links *app, View_ID view_id, Face_ID face_id){
|
||||
View_Summary view = {};
|
||||
if (get_view_summary(app, view_id, AccessAll, &view)){
|
||||
Rect_f32 rect_f32 = f32R(view.render_region);
|
||||
Rect_f32 rect_f32 = view.render_region;
|
||||
default_ui_render_caller(app, view_id, rect_f32, face_id);
|
||||
}
|
||||
}
|
||||
|
@ -868,7 +868,7 @@ static void
|
|||
default_ui_render_caller(Application_Links *app, View_ID view_id){
|
||||
View_Summary view = {};
|
||||
if (get_view_summary(app, view_id, AccessAll, &view)){
|
||||
Rect_f32 rect_f32 = f32R(view.render_region);
|
||||
Rect_f32 rect_f32 = view.render_region;
|
||||
Buffer_ID buffer_id = 0;
|
||||
view_get_buffer(app, view_id, AccessAll, &buffer_id);
|
||||
Face_ID face_id = 0;
|
||||
|
@ -942,7 +942,7 @@ HOOK_SIG(default_view_adjust){
|
|||
get_view_next(app, &view, AccessAll)){
|
||||
Buffer_ID buffer = 0;
|
||||
view_get_buffer(app, view.view_id, AccessAll, &buffer);
|
||||
i32 view_width = view.render_region.x1 - view.render_region.x0;
|
||||
f32 view_width = view.render_region.x1 - view.render_region.x0;
|
||||
Face_ID face_id = get_default_font_for_view(app, view.view_id);
|
||||
f32 em = get_string_advance(app, face_id, make_lit_string("m"));
|
||||
|
||||
|
|
|
@ -43,11 +43,12 @@
|
|||
#include "4coder_scope_commands.h"
|
||||
#include "4coder_combined_write_commands.h"
|
||||
|
||||
#include "4coder_buffer_seek_constructors.cpp"
|
||||
#include "4coder_hash_functions.cpp"
|
||||
|
||||
#include "4coder_api_transition_30_31.cpp"
|
||||
|
||||
#include "4coder_hash_functions.cpp"
|
||||
#include "4coder_default_framework_variables.cpp"
|
||||
#include "4coder_buffer_seek_constructors.cpp"
|
||||
#include "4coder_helper.cpp"
|
||||
#include "4coder_fancy.cpp"
|
||||
#include "4coder_ui_helper.cpp"
|
||||
|
|
|
@ -47,11 +47,14 @@ struct Application_Links;
|
|||
#define BUFFER_GET_FILE_ATTRIBUTES_SIG(n) b32 n(Application_Links *app, Buffer_ID buffer_id, File_Attributes *attributes_out)
|
||||
#define GET_VIEW_NEXT_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out)
|
||||
#define GET_VIEW_PREV_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out)
|
||||
#define GET_VIEW_SUMMARY_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out)
|
||||
#define GET_ACTIVE_VIEW_SIG(n) b32 n(Application_Links *app, Access_Flag access, View_ID *view_id_out)
|
||||
#define GET_ACTIVE_PANEL_SIG(n) b32 n(Application_Links *app, Panel_ID *panel_id_out)
|
||||
#define VIEW_EXISTS_SIG(n) b32 n(Application_Links *app, View_ID view_id)
|
||||
#define VIEW_GET_BUFFER_SIG(n) b32 n(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out)
|
||||
#define VIEW_GET_CURSOR_POS_SIG(n) b32 n(Application_Links *app, View_ID view_id, i32 *pos_out)
|
||||
#define VIEW_GET_MARK_POS_SIG(n) b32 n(Application_Links *app, View_ID view_id, i32 *pos_out)
|
||||
#define VIEW_GET_PREFERRED_X_SIG(n) b32 n(Application_Links *app, View_ID view_id, f32 *preferred_x_out)
|
||||
#define VIEW_GET_SCREEN_RECT_SIG(n) b32 n(Application_Links *app, View_ID view_id, Rect_f32 *rect_out)
|
||||
#define VIEW_GET_PANEL_SIG(n) b32 n(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out)
|
||||
#define PANEL_GET_VIEW_SIG(n) b32 n(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out)
|
||||
#define PANEL_IS_SPLIT_SIG(n) b32 n(Application_Links *app, Panel_ID panel_id)
|
||||
|
@ -229,11 +232,14 @@ typedef BUFFER_REOPEN_SIG(Buffer_Reopen_Function);
|
|||
typedef BUFFER_GET_FILE_ATTRIBUTES_SIG(Buffer_Get_File_Attributes_Function);
|
||||
typedef GET_VIEW_NEXT_SIG(Get_View_Next_Function);
|
||||
typedef GET_VIEW_PREV_SIG(Get_View_Prev_Function);
|
||||
typedef GET_VIEW_SUMMARY_SIG(Get_View_Summary_Function);
|
||||
typedef GET_ACTIVE_VIEW_SIG(Get_Active_View_Function);
|
||||
typedef GET_ACTIVE_PANEL_SIG(Get_Active_Panel_Function);
|
||||
typedef VIEW_EXISTS_SIG(View_Exists_Function);
|
||||
typedef VIEW_GET_BUFFER_SIG(View_Get_Buffer_Function);
|
||||
typedef VIEW_GET_CURSOR_POS_SIG(View_Get_Cursor_Pos_Function);
|
||||
typedef VIEW_GET_MARK_POS_SIG(View_Get_Mark_Pos_Function);
|
||||
typedef VIEW_GET_PREFERRED_X_SIG(View_Get_Preferred_X_Function);
|
||||
typedef VIEW_GET_SCREEN_RECT_SIG(View_Get_Screen_Rect_Function);
|
||||
typedef VIEW_GET_PANEL_SIG(View_Get_Panel_Function);
|
||||
typedef PANEL_GET_VIEW_SIG(Panel_Get_View_Function);
|
||||
typedef PANEL_IS_SPLIT_SIG(Panel_Is_Split_Function);
|
||||
|
@ -413,11 +419,14 @@ Buffer_Reopen_Function *buffer_reopen;
|
|||
Buffer_Get_File_Attributes_Function *buffer_get_file_attributes;
|
||||
Get_View_Next_Function *get_view_next;
|
||||
Get_View_Prev_Function *get_view_prev;
|
||||
Get_View_Summary_Function *get_view_summary;
|
||||
Get_Active_View_Function *get_active_view;
|
||||
Get_Active_Panel_Function *get_active_panel;
|
||||
View_Exists_Function *view_exists;
|
||||
View_Get_Buffer_Function *view_get_buffer;
|
||||
View_Get_Cursor_Pos_Function *view_get_cursor_pos;
|
||||
View_Get_Mark_Pos_Function *view_get_mark_pos;
|
||||
View_Get_Preferred_X_Function *view_get_preferred_x;
|
||||
View_Get_Screen_Rect_Function *view_get_screen_rect;
|
||||
View_Get_Panel_Function *view_get_panel;
|
||||
Panel_Get_View_Function *panel_get_view;
|
||||
Panel_Is_Split_Function *panel_is_split;
|
||||
|
@ -596,11 +605,14 @@ Buffer_Reopen_Function *buffer_reopen_;
|
|||
Buffer_Get_File_Attributes_Function *buffer_get_file_attributes_;
|
||||
Get_View_Next_Function *get_view_next_;
|
||||
Get_View_Prev_Function *get_view_prev_;
|
||||
Get_View_Summary_Function *get_view_summary_;
|
||||
Get_Active_View_Function *get_active_view_;
|
||||
Get_Active_Panel_Function *get_active_panel_;
|
||||
View_Exists_Function *view_exists_;
|
||||
View_Get_Buffer_Function *view_get_buffer_;
|
||||
View_Get_Cursor_Pos_Function *view_get_cursor_pos_;
|
||||
View_Get_Mark_Pos_Function *view_get_mark_pos_;
|
||||
View_Get_Preferred_X_Function *view_get_preferred_x_;
|
||||
View_Get_Screen_Rect_Function *view_get_screen_rect_;
|
||||
View_Get_Panel_Function *view_get_panel_;
|
||||
Panel_Get_View_Function *panel_get_view_;
|
||||
Panel_Is_Split_Function *panel_is_split_;
|
||||
|
@ -787,11 +799,14 @@ app_links->buffer_reopen_ = Buffer_Reopen;\
|
|||
app_links->buffer_get_file_attributes_ = Buffer_Get_File_Attributes;\
|
||||
app_links->get_view_next_ = Get_View_Next;\
|
||||
app_links->get_view_prev_ = Get_View_Prev;\
|
||||
app_links->get_view_summary_ = Get_View_Summary;\
|
||||
app_links->get_active_view_ = Get_Active_View;\
|
||||
app_links->get_active_panel_ = Get_Active_Panel;\
|
||||
app_links->view_exists_ = View_Exists;\
|
||||
app_links->view_get_buffer_ = View_Get_Buffer;\
|
||||
app_links->view_get_cursor_pos_ = View_Get_Cursor_Pos;\
|
||||
app_links->view_get_mark_pos_ = View_Get_Mark_Pos;\
|
||||
app_links->view_get_preferred_x_ = View_Get_Preferred_X;\
|
||||
app_links->view_get_screen_rect_ = View_Get_Screen_Rect;\
|
||||
app_links->view_get_panel_ = View_Get_Panel;\
|
||||
app_links->panel_get_view_ = Panel_Get_View;\
|
||||
app_links->panel_is_split_ = Panel_Is_Split;\
|
||||
|
@ -970,11 +985,14 @@ static b32 buffer_reopen(Application_Links *app, Buffer_ID buffer_id, Buffer_Reo
|
|||
static b32 buffer_get_file_attributes(Application_Links *app, Buffer_ID buffer_id, File_Attributes *attributes_out){return(app->buffer_get_file_attributes(app, buffer_id, attributes_out));}
|
||||
static b32 get_view_next(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_next(app, view_id, access, view_id_out));}
|
||||
static b32 get_view_prev(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_prev(app, view_id, access, view_id_out));}
|
||||
static b32 get_view_summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out){return(app->get_view_summary(app, view_id, access, view_summary_out));}
|
||||
static b32 get_active_view(Application_Links *app, Access_Flag access, View_ID *view_id_out){return(app->get_active_view(app, access, view_id_out));}
|
||||
static b32 get_active_panel(Application_Links *app, Panel_ID *panel_id_out){return(app->get_active_panel(app, panel_id_out));}
|
||||
static b32 view_exists(Application_Links *app, View_ID view_id){return(app->view_exists(app, view_id));}
|
||||
static b32 view_get_buffer(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out){return(app->view_get_buffer(app, view_id, access, buffer_id_out));}
|
||||
static b32 view_get_cursor_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_cursor_pos(app, view_id, pos_out));}
|
||||
static b32 view_get_mark_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_mark_pos(app, view_id, pos_out));}
|
||||
static b32 view_get_preferred_x(Application_Links *app, View_ID view_id, f32 *preferred_x_out){return(app->view_get_preferred_x(app, view_id, preferred_x_out));}
|
||||
static b32 view_get_screen_rect(Application_Links *app, View_ID view_id, Rect_f32 *rect_out){return(app->view_get_screen_rect(app, view_id, rect_out));}
|
||||
static b32 view_get_panel(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out){return(app->view_get_panel(app, view_id, panel_id_out));}
|
||||
static b32 panel_get_view(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out){return(app->panel_get_view(app, panel_id, view_id_out));}
|
||||
static b32 panel_is_split(Application_Links *app, Panel_ID panel_id){return(app->panel_is_split(app, panel_id));}
|
||||
|
@ -1153,11 +1171,14 @@ static b32 buffer_reopen(Application_Links *app, Buffer_ID buffer_id, Buffer_Reo
|
|||
static b32 buffer_get_file_attributes(Application_Links *app, Buffer_ID buffer_id, File_Attributes *attributes_out){return(app->buffer_get_file_attributes_(app, buffer_id, attributes_out));}
|
||||
static b32 get_view_next(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_next_(app, view_id, access, view_id_out));}
|
||||
static b32 get_view_prev(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out){return(app->get_view_prev_(app, view_id, access, view_id_out));}
|
||||
static b32 get_view_summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out){return(app->get_view_summary_(app, view_id, access, view_summary_out));}
|
||||
static b32 get_active_view(Application_Links *app, Access_Flag access, View_ID *view_id_out){return(app->get_active_view_(app, access, view_id_out));}
|
||||
static b32 get_active_panel(Application_Links *app, Panel_ID *panel_id_out){return(app->get_active_panel_(app, panel_id_out));}
|
||||
static b32 view_exists(Application_Links *app, View_ID view_id){return(app->view_exists_(app, view_id));}
|
||||
static b32 view_get_buffer(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out){return(app->view_get_buffer_(app, view_id, access, buffer_id_out));}
|
||||
static b32 view_get_cursor_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_cursor_pos_(app, view_id, pos_out));}
|
||||
static b32 view_get_mark_pos(Application_Links *app, View_ID view_id, i32 *pos_out){return(app->view_get_mark_pos_(app, view_id, pos_out));}
|
||||
static b32 view_get_preferred_x(Application_Links *app, View_ID view_id, f32 *preferred_x_out){return(app->view_get_preferred_x_(app, view_id, preferred_x_out));}
|
||||
static b32 view_get_screen_rect(Application_Links *app, View_ID view_id, Rect_f32 *rect_out){return(app->view_get_screen_rect_(app, view_id, rect_out));}
|
||||
static b32 view_get_panel(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out){return(app->view_get_panel_(app, view_id, panel_id_out));}
|
||||
static b32 panel_get_view(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out){return(app->panel_get_view_(app, panel_id, view_id_out));}
|
||||
static b32 panel_is_split(Application_Links *app, Panel_ID panel_id){return(app->panel_is_split_(app, panel_id));}
|
||||
|
|
|
@ -18,7 +18,7 @@ CUSTOM_DOC("A lister mode command that activates the list's action on the highli
|
|||
Partition *scratch = &global_part;
|
||||
Heap *heap = &global_heap;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
void *user_data = 0;
|
||||
if (0 <= state->raw_item_index && state->raw_item_index < state->lister.data.options.count){
|
||||
|
@ -32,7 +32,7 @@ CUSTOM_COMMAND_SIG(lister__write_character)
|
|||
CUSTOM_DOC("A lister mode command that dispatches to the lister's write character handler.")
|
||||
{
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->lister.data.handlers.write_character != 0){
|
||||
state->lister.data.handlers.write_character(app);
|
||||
}
|
||||
|
@ -42,7 +42,7 @@ CUSTOM_COMMAND_SIG(lister__backspace_text_field)
|
|||
CUSTOM_DOC("A lister mode command that dispatches to the lister's backspace text field handler.")
|
||||
{
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->lister.data.handlers.backspace != 0){
|
||||
state->lister.data.handlers.backspace(app);
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ CUSTOM_COMMAND_SIG(lister__move_up)
|
|||
CUSTOM_DOC("A lister mode command that dispatches to the lister's navigate up handler.")
|
||||
{
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->lister.data.handlers.navigate_up != 0){
|
||||
state->lister.data.handlers.navigate_up(app);
|
||||
}
|
||||
|
@ -62,7 +62,7 @@ CUSTOM_COMMAND_SIG(lister__move_down)
|
|||
CUSTOM_DOC("A lister mode command that dispatches to the lister's navigate down handler.")
|
||||
{
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->lister.data.handlers.navigate_down != 0){
|
||||
state->lister.data.handlers.navigate_down(app);
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ CUSTOM_DOC("A lister mode command that scrolls the list in response to the mouse
|
|||
Mouse_State mouse = get_mouse_state(app);
|
||||
scroll.target_y += mouse.wheel;
|
||||
view_set_scroll(app, &view, scroll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
lister_update_ui(app, scratch, &view, state);
|
||||
}
|
||||
|
@ -88,7 +88,7 @@ CUSTOM_DOC("A lister mode command that beings a click interaction with a list it
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
UI_Item clicked = lister_get_clicked_item(app, view.view_id, scratch);
|
||||
state->hot_user_data = clicked.user_data;
|
||||
|
@ -101,7 +101,7 @@ CUSTOM_DOC("A lister mode command that ends a click interaction with a list item
|
|||
Partition *scratch = &global_part;
|
||||
Heap *heap = &global_heap;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized && state->hot_user_data != 0){
|
||||
UI_Item clicked = lister_get_clicked_item(app, view.view_id, scratch);
|
||||
if (state->hot_user_data == clicked.user_data){
|
||||
|
@ -116,7 +116,7 @@ CUSTOM_DOC("A lister mode command that updates the lists UI data.")
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
lister_update_ui(app, scratch, &view, state);
|
||||
}
|
||||
|
@ -127,7 +127,7 @@ CUSTOM_DOC("A lister mode command that inserts a new character to the text field
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
User_Input in = get_command_input(app);
|
||||
u8 character[4];
|
||||
|
@ -147,7 +147,7 @@ CUSTOM_DOC("A lister mode command that backspaces one character from the text fi
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
backspace_utf8(&state->lister.data.text_field);
|
||||
backspace_utf8(&state->lister.data.key_string);
|
||||
|
@ -162,7 +162,7 @@ CUSTOM_DOC("A lister mode command that moves the highlighted item one up in the
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
state->item_index = state->item_index - 1;
|
||||
if (state->item_index < 0){
|
||||
|
@ -178,7 +178,7 @@ CUSTOM_DOC("A lister mode command that moves the highlighted item one down in th
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
state->item_index = state->item_index + 1;
|
||||
if (state->item_index > state->item_count_after_filter - 1){
|
||||
|
@ -194,7 +194,7 @@ CUSTOM_DOC("A lister mode command that inserts a character into the text field o
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
User_Input in = get_command_input(app);
|
||||
u8 character[4];
|
||||
|
@ -219,7 +219,7 @@ CUSTOM_DOC("A lister mode command that backspaces one character from the text fi
|
|||
{
|
||||
Partition *scratch = &global_part;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
if (state->lister.data.text_field.size > 0){
|
||||
char last_char = state->lister.data.text_field.str[state->lister.data.text_field.size - 1];
|
||||
|
@ -259,7 +259,7 @@ CUSTOM_DOC("A lister mode command that handles input for the fixed sure to kill
|
|||
Partition *scratch = &global_part;
|
||||
Heap *heap = &global_heap;
|
||||
View_Summary view = get_active_view(app, AccessAll);
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view.view_id);
|
||||
if (state->initialized){
|
||||
User_Input in = get_command_input(app);
|
||||
u8 character[4];
|
||||
|
@ -316,7 +316,7 @@ begin_integrated_lister__with_refresh_handler(Application_Links *app, char *quer
|
|||
Heap *heap = &global_heap;
|
||||
view_begin_ui_mode(app, view);
|
||||
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
|
||||
Lister_State *state = view_get_lister_state(view);
|
||||
Lister_State *state = view_get_lister_state(view->view_id);
|
||||
init_lister_state(app, state, heap);
|
||||
lister_first_init(app, &state->lister, user_data, user_data_size);
|
||||
lister_set_query_string(&state->lister.data, query_string);
|
||||
|
@ -354,7 +354,7 @@ begin_integrated_lister__basic_list(Application_Links *app, char *query_string,
|
|||
Heap *heap = &global_heap;
|
||||
view_begin_ui_mode(app, view);
|
||||
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
|
||||
Lister_State *state = view_get_lister_state(view);
|
||||
Lister_State *state = view_get_lister_state(view->view_id);
|
||||
init_lister_state(app, state, heap);
|
||||
lister_first_init(app, &state->lister, user_data, user_data_size);
|
||||
for (i32 i = 0; i < option_count; i += 1){
|
||||
|
@ -377,7 +377,7 @@ begin_integrated_lister__with_fixed_options(Application_Links *app, char *query_
|
|||
Heap *heap = &global_heap;
|
||||
view_begin_ui_mode(app, view);
|
||||
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
|
||||
Lister_State *state = view_get_lister_state(view);
|
||||
Lister_State *state = view_get_lister_state(view->view_id);
|
||||
init_lister_state(app, state, heap);
|
||||
lister_first_init(app, &state->lister, user_data, user_data_size);
|
||||
for (i32 i = 0; i < option_count; i += 1){
|
||||
|
@ -423,7 +423,7 @@ begin_integrated_lister__theme_list(Application_Links *app, char *query_string,
|
|||
Heap *heap = &global_heap;
|
||||
view_begin_ui_mode(app, view);
|
||||
view_set_setting(app, view, ViewSetting_UICommandMap, default_lister_ui_map);
|
||||
Lister_State *state = view_get_lister_state(view);
|
||||
Lister_State *state = view_get_lister_state(view->view_id);
|
||||
init_lister_state(app, state, heap);
|
||||
lister_first_init(app, &state->lister, user_data, user_data_size);
|
||||
state->lister.data.theme_list = true;
|
||||
|
|
|
@ -260,12 +260,13 @@ panel_space_from_view_space(Vec2_i32 p, Vec2_i32 scroll_p){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
// TODO(allen): VIEW_16_LIMIT
|
||||
Lister_State global_lister_state_[16] = {};
|
||||
Lister_State *global_lister_state = global_lister_state_ - 1;
|
||||
|
||||
static Lister_State*
|
||||
view_get_lister_state(View_Summary *view){
|
||||
return(&global_lister_state[view->view_id]);
|
||||
view_get_lister_state(View_ID view){
|
||||
return(&global_lister_state[view]);
|
||||
}
|
||||
|
||||
static i32
|
||||
|
@ -292,9 +293,9 @@ init_lister_state(Application_Links *app, Lister_State *state, Heap *heap){
|
|||
}
|
||||
|
||||
UI_QUIT_FUNCTION(lister_quit_function){
|
||||
Lister_State *state = view_get_lister_state(&view);
|
||||
Lister_State *state = view_get_lister_state(view);
|
||||
state->initialized = false;
|
||||
view_clear_ui_data(app, view.view_id);
|
||||
view_clear_ui_data(app, view);
|
||||
}
|
||||
|
||||
static UI_Item
|
||||
|
@ -348,7 +349,7 @@ lister_update_ui(Application_Links *app, Partition *scratch, View_Summary *view,
|
|||
b32 is_theme_list = state->lister.data.theme_list;
|
||||
|
||||
i32 x0 = 0;
|
||||
i32 x1 = rect_width(view->view_region);
|
||||
i32 x1 = (i32)(rect_width(view->view_region));
|
||||
i32 line_height = lister_get_line_height(view);
|
||||
i32 block_height = lister_get_block_height(line_height, is_theme_list);
|
||||
i32 text_field_height = lister_get_text_field_height(view);
|
||||
|
|
|
@ -16,52 +16,12 @@ access_test(u32 lock_flags, u32 access_flags){
|
|||
return((lock_flags & ~access_flags) == 0);
|
||||
}
|
||||
|
||||
internal void
|
||||
fill_view_summary(System_Functions *system, View_Summary *view, View *vptr, Live_Views *live_set, Working_Set *working_set){
|
||||
block_zero_struct(view);
|
||||
if (vptr->in_use){
|
||||
Assert(vptr->file != 0);
|
||||
|
||||
view->exists = true;
|
||||
view->view_id = (i32)(vptr - live_set->views) + 1;
|
||||
view->line_height = (f32)(vptr->line_height);
|
||||
view->unwrapped_lines = vptr->file->settings.unwrapped_lines;
|
||||
view->show_whitespace = vptr->show_whitespace;
|
||||
view->lock_flags = view_get_access_flags(vptr);
|
||||
|
||||
view->buffer_id = vptr->file->id.id;
|
||||
|
||||
File_Edit_Positions edit_pos = view_get_edit_pos(vptr);
|
||||
view->mark = file_compute_cursor(system, vptr->file, seek_pos(vptr->mark));
|
||||
view->cursor = file_compute_cursor(system, vptr->file, seek_pos(edit_pos.cursor_pos));
|
||||
|
||||
view->preferred_x = vptr->preferred_x;
|
||||
|
||||
Rect_i32 region = vptr->panel->rect_inner;
|
||||
view->view_region = region;
|
||||
view->render_region = i32R(0, 0, rect_width(region), rect_height(region));
|
||||
if (vptr->ui_mode){
|
||||
view->scroll_vars = vptr->ui_scroll;
|
||||
}
|
||||
else{
|
||||
view->scroll_vars = edit_pos.scroll;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal void
|
||||
fill_view_summary(System_Functions *system, View_Summary *view, View *vptr, Models *models){
|
||||
fill_view_summary(system, view, vptr, &models->live_set, &models->working_set);
|
||||
}
|
||||
|
||||
internal void
|
||||
view_quit_ui(System_Functions *system, Models *models, View *view){
|
||||
Assert(view != 0);
|
||||
view->ui_mode = false;
|
||||
if (view->ui_quit != 0){
|
||||
View_Summary view_summary = {};
|
||||
fill_view_summary(system, &view_summary, view, models);
|
||||
view->ui_quit(&models->app_links, view_summary);
|
||||
view->ui_quit(&models->app_links, view_get_id(&models->live_set, view));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1807,11 +1767,11 @@ get_view_prev__inner(Layout *layout, View *view){
|
|||
API_EXPORT b32
|
||||
Get_View_Next(Application_Links *app, View_ID view_id, Access_Flag access, View_ID *view_id_out)
|
||||
/*
|
||||
DOC_PARAM(view, The View_Summary pointed to by view is iterated to the next view or to a null summary if this is the last view.)
|
||||
DOC_PARAM(view, The pointed to by view is iterated to the next view or to a null summary if this is the last view.)
|
||||
DOC_PARAM(access, The access parameter determines what levels of protection this call can access. The view outputted will be the next view that is accessible.)
|
||||
DOC
|
||||
(
|
||||
This call steps a View_Summary to the next view in the global view order.
|
||||
This call steps a to the next view in the global view order.
|
||||
|
||||
If the view outputted does not exist, the loop is finished.
|
||||
Views should not be closed or opened durring a view loop.
|
||||
|
@ -1855,26 +1815,6 @@ Get_View_Prev(Application_Links *app, View_ID view_id, Access_Flag access, View_
|
|||
return(result);
|
||||
}
|
||||
|
||||
// TODO(allen): redocument
|
||||
API_EXPORT b32
|
||||
Get_View_Summary(Application_Links *app, View_ID view_id, Access_Flag access, View_Summary *view_summary_out)
|
||||
/*
|
||||
DOC_PARAM(view_id, The view_id specifies the view to try to get.)
|
||||
DOC_PARAM(access, The access parameter determines what levels of protection this call can access.)
|
||||
DOC_RETURN(This call returns a summary that describes the indicated view if it is open and accessible.)
|
||||
DOC_SEE(Access_Flag)
|
||||
*/{
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
System_Functions *system = models->system;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
b32 result = false;
|
||||
if (view_api_check_view(view, access)){
|
||||
fill_view_summary(system, view_summary_out, view, models);
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
// TODO(allen): redocument
|
||||
API_EXPORT b32
|
||||
Get_Active_View(Application_Links *app, Access_Flag access, View_ID *view_id_out)
|
||||
|
@ -1913,6 +1853,17 @@ Get_Active_Panel(Application_Links *app, Panel_ID *panel_id_out){
|
|||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT b32
|
||||
View_Exists(Application_Links *app, View_ID view_id){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
b32 result = false;
|
||||
if (view_api_check_view(view)){
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT b32
|
||||
View_Get_Buffer(Application_Links *app, View_ID view_id, Access_Flag access, Buffer_ID *buffer_id_out){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
|
@ -1941,13 +1892,48 @@ View_Get_Cursor_Pos(Application_Links *app, View_ID view_id, i32 *pos_out){
|
|||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT b32
|
||||
View_Get_Mark_Pos(Application_Links *app, View_ID view_id, i32 *pos_out){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
b32 result = false;
|
||||
if (view_api_check_view(view)){
|
||||
*pos_out = view->mark;
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT b32
|
||||
View_Get_Preferred_X(Application_Links *app, View_ID view_id, f32 *preferred_x_out){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
b32 result = false;
|
||||
if (view_api_check_view(view)){
|
||||
*preferred_x_out = view->preferred_x;
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT b32
|
||||
View_Get_Screen_Rect(Application_Links *app, View_ID view_id, Rect_f32 *rect_out){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
b32 result = false;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
if (view_api_check_view(view)){
|
||||
*rect_out = f32R(view->panel->rect_full);
|
||||
result = true;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
API_EXPORT b32
|
||||
View_Get_Panel(Application_Links *app, View_ID view_id, Panel_ID *panel_id_out){
|
||||
Models *models = (Models*)app->cmd_context;
|
||||
Layout *layout = &models->layout;
|
||||
b32 result = false;
|
||||
View *view = imp_get_view(models, view_id);
|
||||
*panel_id_out = 0;
|
||||
if (view_api_check_view(view)){
|
||||
Panel *panel = view->panel;
|
||||
*panel_id_out = panel_get_id(layout, panel);
|
||||
|
@ -1961,7 +1947,6 @@ Panel_Get_View(Application_Links *app, Panel_ID panel_id, View_ID *view_id_out){
|
|||
Models *models = (Models*)app->cmd_context;
|
||||
b32 result = false;
|
||||
Panel *panel = imp_get_panel(models, panel_id);
|
||||
*view_id_out = 0;
|
||||
if (panel_api_check_panel(panel)){
|
||||
if (panel->kind == PanelKind_Final){
|
||||
View *view = panel->view;
|
||||
|
|
Loading…
Reference in New Issue