Removed JM_DRAWRGN message. Removed jwidget_redraw_region and jwidget_send_message_after_type functions.

This commit is contained in:
David Capello 2009-11-19 14:38:24 +00:00
parent 6d04c3815c
commit b70f84b46c
8 changed files with 13 additions and 117 deletions

View File

@ -291,7 +291,7 @@ void effect_flush(Effect *effect)
jregion_intersect(reg1, reg1, reg2);
jregion_free(reg2);
jwidget_redraw_region(editor, reg1);
jwidget_invalidate_region(editor, reg1);
jregion_free(reg1);
}
}

View File

@ -150,7 +150,6 @@ enum {
JM_REQSIZE, /* request size */
JM_SETPOS, /* set position */
JM_WINMOVE, /* window movement */
JM_DRAWRGN, /* redraw region */
JM_DEFERREDFREE, /* deferred jwidget_free call */
JM_DIRTYCHILDREN, /* dirty children */
JM_QUEUEPROCESSING, /* only sent to manager which indicate

View File

@ -115,7 +115,6 @@ static bool manager_msg_proc(JWidget widget, JMessage msg);
static void manager_request_size(JWidget widget, int *w, int *h);
static void manager_set_position(JWidget widget, JRect rect);
static void manager_pump_queue(JWidget widget);
static void manager_redraw_region(JWidget widget, JRegion region);
/* auxiliary */
static void generate_setcursor_message();
@ -1079,10 +1078,6 @@ static bool manager_msg_proc(JWidget widget, JMessage msg)
manager_set_position(widget, &msg->setpos.rect);
return true;
case JM_DRAWRGN:
manager_redraw_region(widget, msg->drawrgn.region);
return true;
case JM_DRAW:
jdraw_rectfill(&msg->draw.rect, widget->theme->desktop_color);
return true;
@ -1298,7 +1293,7 @@ static void manager_pump_queue(JWidget widget_manager)
}
}
static void manager_redraw_region(JWidget widget, JRegion region)
void jmanager_invalidate_region(JWidget widget, JRegion region)
{
JWidget window;
JRegion reg1 = jregion_new(NULL, 0);
@ -1313,8 +1308,8 @@ static void manager_redraw_region(JWidget widget, JRegion region)
JI_LIST_FOR_EACH(widget->children, link) {
window = (JWidget)link->data;
/* redraw this window */
jwidget_redraw_region(window, reg1);
// invalidate regions of this window
jwidget_invalidate_region(window, reg1);
/* there is desktop? */
if (jwindow_is_desktop(window))
@ -1327,13 +1322,9 @@ static void manager_redraw_region(JWidget widget, JRegion region)
jregion_free(reg3);
}
/* clean areas outside windows (only for non-desktop enviroments) */
if (link == widget->children->end) {
JMessage msg = jmessage_new(JM_DRAWRGN);
msg->drawrgn.region = reg1;
jwidget_send_message_after_type(widget, msg, JI_MANAGER);
jmessage_free(msg);
}
// invalidate areas outside windows (only when there are not a desktop window)
if (link == widget->children->end)
jwidget_invalidate_region(widget, reg1);
jregion_free(reg1);
jregion_free(reg2);

View File

@ -76,4 +76,6 @@ void jmanager_add_msg_filter(int message, JWidget widget);
void jmanager_remove_msg_filter(int message, JWidget widget);
void jmanager_remove_msg_filter_for(JWidget widget);
void jmanager_invalidate_region(JWidget widget, JRegion region);
#endif

View File

@ -1162,22 +1162,6 @@ void jwidget_flush_redraw(JWidget widget)
jwidget_flush_redraw((JWidget)link->data);
}
void jwidget_redraw_region(JWidget widget, const JRegion region)
{
assert_valid_widget(widget);
if (jwidget_is_visible(widget)) {
#if 1
JMessage msg = jmessage_new(JM_DRAWRGN);
msg->drawrgn.region = region;
jwidget_send_message(widget, msg);
jmessage_free(msg);
#else
jwidget_invalidate_region(widget, region);
#endif
}
}
void jwidget_invalidate(JWidget widget)
{
assert_valid_widget(widget);
@ -1336,32 +1320,6 @@ bool jwidget_send_message(JWidget widget, JMessage msg)
return done;
}
bool jwidget_send_message_after_type(JWidget widget, JMessage msg, int type)
{
bool done = false;
bool send = false;
JHook hook;
JLink link;
assert_valid_widget(widget);
assert(msg != NULL);
JI_LIST_FOR_EACH(widget->hooks, link) {
hook = reinterpret_cast<JHook>(link->data);
if (hook->type == type) {
send = true;
continue;
}
else if (!send)
continue;
SENDMSG();
}
return done;
}
void jwidget_close_window(JWidget widget)
{
JWidget window;
@ -1528,58 +1486,6 @@ bool jwidget::msg_proc(JMessage msg)
return true;
}
case JM_DRAWRGN:
#if 0
{
int redraw = false;
JRegion region2;
JMessage msg2;
JRect rect;
JLink link;
int count;
for (it=msg->drawrgn.region->rects; it; it=it->next) {
rect = it->data;
if ((widget->rc->x <= rect->x+rect->w-1) &&
(widget->rc->y <= rect->y+rect->h-1) &&
(widget->rc->x+widget->rc->w-1 >= rect->x) &&
(widget->rc->y+widget->rc->h-1 >= rect->y)) {
redraw = true;
break;
}
}
if (redraw) {
/* get areas to draw */
region2 = jwidget_get_drawable_region(widget, 0);
jregion_intersect2 (region2, msg->drawrgn.region);
/* draw the widget */
count = jlist_length(region2->rects);
for (it=region2->rects; it; it=it->next) {
/* create the draw message */
msg2 = jmessage_new(JM_DRAW);
msg2->draw.count = --count;
jrect_copy(&msg2->draw.rect, (JRect)it->data);
jmessage_add_dest(msg2, widget);
/* enqueue message */
jmanager_enqueue_message(msg2);
}
jregion_free(region2);
/* send message to children */
JI_LIST_FOR_EACH(widget->children, link)
jwidget_send_message((JWidget)link->data, msg);
}
}
#else
if (!(widget->flags & JI_HIDDEN)) /* is visible? */
jwidget_invalidate_region(widget, msg->drawrgn.region);
#endif
return true;
case JM_DIRTYCHILDREN: {
JLink link;

View File

@ -152,7 +152,6 @@ void jwidget_set_theme(JWidget widget, JTheme theme);
/* drawing methods */
void jwidget_flush_redraw(JWidget widget);
void jwidget_redraw_region(JWidget widget, const JRegion region);
void jwidget_invalidate(JWidget widget);
void jwidget_invalidate_rect(JWidget widget, const JRect rect);
void jwidget_invalidate_region(JWidget widget, const JRegion region);
@ -168,7 +167,6 @@ bool jwidget_emit_signal(JWidget widget, int signal_num);
/* manager handler */
bool jwidget_send_message(JWidget widget, JMessage msg);
bool jwidget_send_message_after_type(JWidget widget, JMessage msg, int type);
void jwidget_close_window(JWidget widget);
void jwidget_capture_mouse(JWidget widget);
void jwidget_hard_capture_mouse(JWidget widget);

View File

@ -614,7 +614,6 @@ static void limit_size(JWidget widget, int *w, int *h)
*h = MAX(*h, widget->border_width.t+widget->border_width.b);
}
/* TODO add support to blit available regions */
static void move_window(JWidget widget, JRect rect, bool use_blit)
{
#define FLAGS JI_GDR_CUTTOPWINDOWS | JI_GDR_USECHILDAREA
@ -719,8 +718,8 @@ static void move_window(JWidget widget, JRect rect, bool use_blit)
jregion_free(moveable_region);
}
jwidget_redraw_region(manager, manager_refresh_region);
jwidget_redraw_region(widget, window_refresh_region);
jmanager_invalidate_region(manager, manager_refresh_region);
jwidget_invalidate_region(widget, window_refresh_region);
jregion_free(old_drawable_region);
jregion_free(new_drawable_region);

View File

@ -1251,13 +1251,14 @@ void jstandard_theme::draw_window(JWidget widget, JRect clip)
/* extra lines */
if (!jwindow_is_desktop(widget)) {
// draw window borders
jdraw_rect(pos, COLOR_FOREGROUND);
jrect_shrink(pos, 1);
jdraw_rectedge(pos, COLOR_BACKGROUND, COLOR_DISABLED);
jrect_shrink(pos, 1);
jdraw_rectfill(pos, BGCOLOR);
/* draw title bar */
// draw title bar
if (widget->has_text()) {
int bg = COLOR_SELECTED;