Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2010-12-01 01:39:41 +0300
committerCampbell Barton <ideasman42@gmail.com>2010-12-01 01:39:41 +0300
commitd9c23d8d5d1cddfe48fbeecee0a23dacd2d60d59 (patch)
tree8340dc8fa09b9e028c3fd7033954508643629aed /source
parentdf6169dada1bd6ad9617ef9e2adb17688f786314 (diff)
minor console changes.
- remove report argument from console functions. - don't update the scroll area while drawing, do this within operators instead. - dont redraw while selecting text unless selection changes.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_console/console_draw.c19
-rw-r--r--source/blender/editors/space_console/console_intern.h8
-rw-r--r--source/blender/editors/space_console/console_ops.c61
-rw-r--r--source/blender/editors/space_console/space_console.c14
4 files changed, 62 insertions, 40 deletions
diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c
index 8112008e9a1..f26bc63f01d 100644
--- a/source/blender/editors/space_console/console_draw.c
+++ b/source/blender/editors/space_console/console_draw.c
@@ -187,7 +187,7 @@ static int console_textview_line_color(struct TextViewContext *tvc, unsigned cha
}
-static int console_textview_main__internal(struct SpaceConsole *sc, struct ARegion *ar, ReportList *UNUSED(reports), int draw, int mval[2], void **mouse_pick, int *pos_pick)
+static int console_textview_main__internal(struct SpaceConsole *sc, struct ARegion *ar, int draw, int mval[2], void **mouse_pick, int *pos_pick)
{
ConsoleLine cl_dummy= {0};
int ret= 0;
@@ -195,6 +195,7 @@ static int console_textview_main__internal(struct SpaceConsole *sc, struct ARegi
View2D *v2d= &ar->v2d;
TextViewContext tvc= {0};
+
tvc.begin= console_textview_begin;
tvc.end= console_textview_end;
@@ -221,19 +222,19 @@ static int console_textview_main__internal(struct SpaceConsole *sc, struct ARegi
}
-void console_textview_main(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports)
+void console_textview_main(struct SpaceConsole *sc, struct ARegion *ar)
{
int mval[2] = {INT_MAX, INT_MAX};
- console_textview_main__internal(sc, ar, reports, 1, mval, NULL, NULL);
+ console_textview_main__internal(sc, ar, 1, mval, NULL, NULL);
}
-int console_textview_height(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports)
+int console_textview_height(struct SpaceConsole *sc, struct ARegion *ar)
{
int mval[2] = {INT_MAX, INT_MAX};
- return console_textview_main__internal(sc, ar, reports, 0, mval, NULL, NULL);
+ return console_textview_main__internal(sc, ar, 0, mval, NULL, NULL);
}
-void *console_text_pick(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports, int mouse_y)
+void *console_text_pick(struct SpaceConsole *sc, struct ARegion *ar, int mouse_y)
{
void *mouse_pick= NULL;
int mval[2];
@@ -241,11 +242,11 @@ void *console_text_pick(struct SpaceConsole *sc, struct ARegion *ar, ReportList
mval[0]= 0;
mval[1]= mouse_y;
- console_textview_main__internal(sc, ar, reports, 0, mval, &mouse_pick, NULL);
+ console_textview_main__internal(sc, ar, 0, mval, &mouse_pick, NULL);
return (void *)mouse_pick;
}
-int console_char_pick(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports, int mval[2])
+int console_char_pick(struct SpaceConsole *sc, struct ARegion *ar, int mval[2])
{
int pos_pick= 0;
void *mouse_pick= NULL;
@@ -254,6 +255,6 @@ int console_char_pick(struct SpaceConsole *sc, struct ARegion *ar, ReportList *r
mval_clamp[0]= CLAMPIS(mval[0], CONSOLE_DRAW_MARGIN, ar->winx-(CONSOLE_DRAW_SCROLL + CONSOLE_DRAW_MARGIN));
mval_clamp[1]= CLAMPIS(mval[1], CONSOLE_DRAW_MARGIN, ar->winy-CONSOLE_DRAW_MARGIN);
- console_textview_main__internal(sc, ar, reports, 0, mval_clamp, &mouse_pick, &pos_pick);
+ console_textview_main__internal(sc, ar, 0, mval_clamp, &mouse_pick, &pos_pick);
return pos_pick;
}
diff --git a/source/blender/editors/space_console/console_intern.h b/source/blender/editors/space_console/console_intern.h
index b8d53785d74..72eac14c2ca 100644
--- a/source/blender/editors/space_console/console_intern.h
+++ b/source/blender/editors/space_console/console_intern.h
@@ -32,10 +32,10 @@ struct ReportList;
struct bContext;
/* console_draw.c */
-void console_textview_main(struct SpaceConsole *sc, struct ARegion *ar, struct ReportList *reports);
-int console_textview_height(struct SpaceConsole *sc, struct ARegion *ar, struct ReportList *reports); /* needed to calculate the scrollbar */
-void *console_text_pick(struct SpaceConsole *sc, struct ARegion *ar, struct ReportList *reports, int mouse_y); /* needed for selection */
-int console_char_pick(struct SpaceConsole *sc, struct ARegion *ar, ReportList *reports, int mval[2]);
+void console_textview_main(struct SpaceConsole *sc, struct ARegion *ar);
+int console_textview_height(struct SpaceConsole *sc, struct ARegion *ar); /* needed to calculate the scrollbar */
+void *console_text_pick(struct SpaceConsole *sc, struct ARegion *ar, int mouse_y); /* needed for selection */
+int console_char_pick(struct SpaceConsole *sc, struct ARegion *ar, int mval[2]);
void console_scrollback_prompt_begin(struct SpaceConsole *sc, ConsoleLine *cl_dummy);
void console_scrollback_prompt_end(struct SpaceConsole *sc, ConsoleLine *cl_dummy);
diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c
index 6aef967b851..e8c7cc6c926 100644
--- a/source/blender/editors/space_console/console_ops.c
+++ b/source/blender/editors/space_console/console_ops.c
@@ -40,6 +40,7 @@
#include "WM_api.h"
#include "WM_types.h"
+#include "UI_view2d.h"
#include "ED_screen.h"
#include "RNA_access.h"
@@ -47,6 +48,13 @@
#include "console_intern.h"
+static void console_textview_update_rect(SpaceConsole *sc, ARegion *ar)
+{
+ View2D *v2d= &ar->v2d;
+
+ UI_view2d_totRect_set(v2d, ar->winx-1, console_textview_height(sc, ar));
+}
+
static void console_select_offset(SpaceConsole *sc, const int offset)
{
sc->sel_start += offset;
@@ -349,6 +357,8 @@ void CONSOLE_OT_move(wmOperatorType *ot)
#define TAB_LENGTH 4
static int insert_exec(bContext *C, wmOperator *op)
{
+ SpaceConsole *sc= CTX_wm_space_console(C);
+ ARegion *ar= CTX_wm_region(C);
ConsoleLine *ci= console_history_verify(C);
char *str= RNA_string_get_alloc(op->ptr, "text", NULL, 0);
int len;
@@ -373,7 +383,8 @@ static int insert_exec(bContext *C, wmOperator *op)
SpaceConsole *sc= CTX_wm_space_console(C);
console_select_offset(sc, len);
}
-
+
+ console_textview_update_rect(sc, ar);
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
@@ -424,13 +435,12 @@ static EnumPropertyItem delete_type_items[]= {
static int delete_exec(bContext *C, wmOperator *op)
{
-
+ SpaceConsole *sc= CTX_wm_space_console(C);
+ ARegion *ar= CTX_wm_region(C);
ConsoleLine *ci= console_history_verify(C);
-
-
- int done = 0;
- int type= RNA_enum_get(op->ptr, "type");
+ const short type= RNA_enum_get(op->ptr, "type");
+ int done = 0;
if(ci->len==0) {
return OPERATOR_CANCELLED;
@@ -461,7 +471,8 @@ static int delete_exec(bContext *C, wmOperator *op)
SpaceConsole *sc= CTX_wm_space_console(C);
console_select_offset(sc, -1);
}
-
+
+ console_textview_update_rect(sc, ar);
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
@@ -488,6 +499,7 @@ void CONSOLE_OT_delete(wmOperatorType *ot)
static int clear_exec(bContext *C, wmOperator *op)
{
SpaceConsole *sc= CTX_wm_space_console(C);
+ ARegion *ar= CTX_wm_region(C);
short scrollback= RNA_boolean_get(op->ptr, "scrollback");
short history= RNA_boolean_get(op->ptr, "history");
@@ -503,9 +515,10 @@ static int clear_exec(bContext *C, wmOperator *op)
while(sc->history.first)
console_history_free(sc, sc->history.first);
}
-
+
+ console_textview_update_rect(sc, ar);
ED_area_tag_redraw(CTX_wm_area(C));
-
+
return OPERATOR_FINISHED;
}
@@ -531,6 +544,8 @@ void CONSOLE_OT_clear(wmOperatorType *ot)
static int history_cycle_exec(bContext *C, wmOperator *op)
{
SpaceConsole *sc= CTX_wm_space_console(C);
+ ARegion *ar= CTX_wm_region(C);
+
ConsoleLine *ci= console_history_verify(C); /* TODO - stupid, just prevernts crashes when no command line */
short reverse= RNA_boolean_get(op->ptr, "reverse"); /* assumes down, reverse is up */
int prev_len= ci->len;
@@ -566,6 +581,8 @@ static int history_cycle_exec(bContext *C, wmOperator *op)
ci= sc->history.last;
console_select_offset(sc, ci->len - prev_len);
+ /* could be wrapped so update scroll rect */
+ console_textview_update_rect(sc, ar);
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
@@ -591,6 +608,7 @@ void CONSOLE_OT_history_cycle(wmOperatorType *ot)
static int history_append_exec(bContext *C, wmOperator *op)
{
SpaceConsole *sc= CTX_wm_space_console(C);
+ ScrArea *sa= CTX_wm_area(C);
ConsoleLine *ci= console_history_verify(C);
char *str= RNA_string_get_alloc(op->ptr, "text", NULL, 0); /* own this text in the new line, dont free */
int cursor= RNA_int_get(op->ptr, "current_character");
@@ -613,9 +631,9 @@ static int history_append_exec(bContext *C, wmOperator *op)
ci= console_history_add_str(sc, str, 1); /* own the string */
console_select_offset(sc, ci->len - prev_len);
console_line_cursor_set(ci, cursor);
-
- ED_area_tag_redraw(CTX_wm_area(C));
-
+
+ ED_area_tag_redraw(sa);
+
return OPERATOR_FINISHED;
}
@@ -641,6 +659,8 @@ void CONSOLE_OT_history_append(wmOperatorType *ot)
static int scrollback_append_exec(bContext *C, wmOperator *op)
{
SpaceConsole *sc= CTX_wm_space_console(C);
+ ARegion *ar= CTX_wm_region(C);
+
ConsoleLine *ci= console_history_verify(C);
char *str= RNA_string_get_alloc(op->ptr, "text", NULL, 0); /* own this text in the new line, dont free */
@@ -650,7 +670,8 @@ static int scrollback_append_exec(bContext *C, wmOperator *op)
ci->type= type;
console_scrollback_limit(sc);
-
+
+ console_textview_update_rect(sc, ar);
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
@@ -765,6 +786,7 @@ void CONSOLE_OT_copy(wmOperatorType *ot)
static int paste_exec(bContext *C, wmOperator *UNUSED(op))
{
SpaceConsole *sc= CTX_wm_space_console(C);
+ ARegion *ar= CTX_wm_region(C);
ConsoleLine *ci= console_history_verify(C);
char *buf_str= WM_clipboard_text_get(0);
@@ -793,6 +815,7 @@ static int paste_exec(bContext *C, wmOperator *UNUSED(op))
MEM_freeN(buf_str);
+ console_textview_update_rect(sc, ar);
ED_area_tag_redraw(CTX_wm_area(C));
return OPERATOR_FINISHED;
@@ -821,7 +844,7 @@ typedef struct SetConsoleCursor {
static void set_cursor_to_pos(SpaceConsole *sc, ARegion *ar, SetConsoleCursor *scu, int mval[2], int UNUSED(sel))
{
int pos;
- pos= console_char_pick(sc, ar, NULL, mval);
+ pos= console_char_pick(sc, ar, mval);
if(scu->sel_init == INT_MAX) {
scu->sel_init= pos;
@@ -848,12 +871,20 @@ static void console_modal_select_apply(bContext *C, wmOperator *op, wmEvent *eve
ARegion *ar= CTX_wm_region(C);
SetConsoleCursor *scu= op->customdata;
int mval[2];
+ int sel_prev[2];
mval[0]= event->mval[0];
mval[1]= event->mval[1];
+ sel_prev[0]= sc->sel_start;
+ sel_prev[1]= sc->sel_end;
+
set_cursor_to_pos(sc, ar, scu, mval, TRUE);
- ED_area_tag_redraw(CTX_wm_area(C));
+
+ /* only redraw if the selection changed */
+ if(sel_prev[0] != sc->sel_start || sel_prev[1] != sc->sel_end) {
+ ED_area_tag_redraw(CTX_wm_area(C));
+ }
}
static void set_cursor_exit(bContext *UNUSED(C), wmOperator *op)
diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c
index 55fb6a50bb4..4fbe96c0e54 100644
--- a/source/blender/editors/space_console/space_console.c
+++ b/source/blender/editors/space_console/space_console.c
@@ -53,14 +53,6 @@
#include "console_intern.h" // own include
-static void console_textview_update_rect(const bContext *C, ARegion *ar)
-{
- SpaceConsole *sc= CTX_wm_space_console(C);
- View2D *v2d= &ar->v2d;
-
- UI_view2d_totRect_set(v2d, ar->winx-1, console_textview_height(sc, ar, CTX_wm_reports(C)));
-}
-
/* ******************** default callbacks for console space ***************** */
static SpaceLink *console_new(const bContext *UNUSED(C))
@@ -208,7 +200,7 @@ static void console_main_area_draw(const bContext *C, ARegion *ar)
SpaceConsole *sc= CTX_wm_space_console(C);
View2D *v2d= &ar->v2d;
View2DScrollers *scrollers;
-
+
if(sc->scrollback.first==NULL)
WM_operator_name_call((bContext *)C, "CONSOLE_OT_banner", WM_OP_EXEC_DEFAULT, NULL);
@@ -216,15 +208,13 @@ static void console_main_area_draw(const bContext *C, ARegion *ar)
UI_ThemeClearColor(TH_BACK);
glClear(GL_COLOR_BUFFER_BIT);
- console_textview_update_rect(C, ar);
-
/* worlks best with no view2d matrix set */
UI_view2d_view_ortho(v2d);
/* data... */
console_history_verify(C); /* make sure we have some command line */
- console_textview_main(sc, ar, CTX_wm_reports(C));
+ console_textview_main(sc, ar);
/* reset view matrix */
UI_view2d_view_restore(C);