mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-22 20:16:54 +03:00
Started refactoring of global redraw handling.
This commit is contained in:
parent
fe0e2508e6
commit
ff7cf93762
@ -858,7 +858,6 @@ void browser_redraw( struct gui_window * gw )
|
|||||||
/* but because this is onscreen plotter, it doesn't */
|
/* but because this is onscreen plotter, it doesn't */
|
||||||
/* make much sense anyway... */
|
/* make much sense anyway... */
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
if (wind_get(aes_handle, WF_NEXTXYWH,
|
if (wind_get(aes_handle, WF_NEXTXYWH,
|
||||||
&todo[0], &todo[1], &todo[2], &todo[3])==0) {
|
&todo[0], &todo[1], &todo[2], &todo[3])==0) {
|
||||||
|
32
atari/gui.c
32
atari/gui.c
@ -131,18 +131,22 @@ void gui_poll(bool active)
|
|||||||
|
|
||||||
struct gui_window * g;
|
struct gui_window * g;
|
||||||
|
|
||||||
for( g = window_list; g != NULL; g=g->next ) {
|
if(input_window->root->redraw_slots.areas_used > 0){
|
||||||
if( browser_redraw_required( g ) ) {
|
window_process_redraws(input_window->root);
|
||||||
browser_redraw(g);
|
|
||||||
}
|
|
||||||
if(g->root->toolbar) {
|
|
||||||
//if(g->root->toolbar->url.redraw ) {
|
|
||||||
// TODO: implement toolbar redraw mechanism
|
|
||||||
//tb_url_redraw( g );
|
|
||||||
//}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// for( g = window_list; g != NULL; g=g->next ) {
|
||||||
|
// if( browser_redraw_required( g ) ) {
|
||||||
|
// browser_redraw(g);
|
||||||
|
// }
|
||||||
|
// if(g->root->toolbar) {
|
||||||
|
// //if(g->root->toolbar->url.redraw ) {
|
||||||
|
// // TODO: implement toolbar redraw mechanism
|
||||||
|
// //tb_url_redraw( g );
|
||||||
|
// //}
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
|
||||||
if( !active ) {
|
if( !active ) {
|
||||||
/* this suits for stuff with lower priority */
|
/* this suits for stuff with lower priority */
|
||||||
/* TBD: really be spare on redraws??? */
|
/* TBD: really be spare on redraws??? */
|
||||||
@ -179,6 +183,9 @@ void gui_poll(bool active)
|
|||||||
}
|
}
|
||||||
} while ( gui_poll_repeat && !(active||rendering));
|
} while ( gui_poll_repeat && !(active||rendering));
|
||||||
|
|
||||||
|
if(input_window->root->redraw_slots.areas_used > 0){
|
||||||
|
window_process_redraws(input_window->root);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -313,6 +320,7 @@ void gui_window_set_title(struct gui_window *gw, const char *title)
|
|||||||
gw->title = realloc(gw->title, l);
|
gw->title = realloc(gw->title, l);
|
||||||
strncpy(gw->title, title, l);
|
strncpy(gw->title, title, l);
|
||||||
}
|
}
|
||||||
|
gw->title[l] = 0;
|
||||||
if(input_window == gw)
|
if(input_window == gw)
|
||||||
window_set_title(gw->root, gw->title);
|
window_set_title(gw->root, gw->title);
|
||||||
}
|
}
|
||||||
@ -336,7 +344,7 @@ void gui_window_set_status(struct gui_window *w, const char *text)
|
|||||||
w->status = realloc(w->status, l);
|
w->status = realloc(w->status, l);
|
||||||
|
|
||||||
strncpy(w->status, text, l);
|
strncpy(w->status, text, l);
|
||||||
w->status[l-1] = 0;
|
w->status[l] = 0;
|
||||||
|
|
||||||
if(input_window == w)
|
if(input_window == w)
|
||||||
window_set_stauts(w->root, (char*)text);
|
window_set_stauts(w->root, (char*)text);
|
||||||
@ -534,7 +542,7 @@ void gui_window_set_url(struct gui_window *w, const char *url)
|
|||||||
w->url = realloc(w->url, l);
|
w->url = realloc(w->url, l);
|
||||||
}
|
}
|
||||||
strncpy(w->url, url, l);
|
strncpy(w->url, url, l);
|
||||||
|
w->url[l] = 0;
|
||||||
if(input_window == w->root->active_gui_window){
|
if(input_window == w->root->active_gui_window){
|
||||||
toolbar_set_url(w->root->toolbar, url);
|
toolbar_set_url(w->root->toolbar, url);
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
#ifndef NS_ATARI_GUI_H_
|
#ifndef NS_ATARI_GUI_H_
|
||||||
#define NS_ATARI_GUI_H_
|
#define NS_ATARI_GUI_H_
|
||||||
|
|
||||||
|
#include "atari/redrawslots.h"
|
||||||
#include "atari/gemtk/gemtk.h"
|
#include "atari/gemtk/gemtk.h"
|
||||||
|
|
||||||
struct point_s {
|
struct point_s {
|
||||||
@ -104,6 +105,7 @@ struct s_gui_win_root
|
|||||||
char * title;
|
char * title;
|
||||||
struct bitmap * icon;
|
struct bitmap * icon;
|
||||||
struct gui_window *active_gui_window;
|
struct gui_window *active_gui_window;
|
||||||
|
struct s_redrw_slots redraw_slots;
|
||||||
/* current size of window on screen: */
|
/* current size of window on screen: */
|
||||||
GRECT loc;
|
GRECT loc;
|
||||||
};
|
};
|
||||||
|
@ -23,10 +23,16 @@
|
|||||||
|
|
||||||
void redraw_slots_init(struct s_redrw_slots * slots, short size)
|
void redraw_slots_init(struct s_redrw_slots * slots, short size)
|
||||||
{
|
{
|
||||||
|
// TODO: allocate slots dynamically!
|
||||||
slots->size = MIN( MAX_REDRW_SLOTS , size);
|
slots->size = MIN( MAX_REDRW_SLOTS , size);
|
||||||
slots->areas_used = 0;
|
slots->areas_used = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void redraw_slots_free(struct s_redrw_slots * slots)
|
||||||
|
{
|
||||||
|
// TOOD: free areas...
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static inline bool rect_intersect( struct rect * box1, struct rect * box2 )
|
static inline bool rect_intersect( struct rect * box1, struct rect * box2 )
|
||||||
{
|
{
|
||||||
@ -44,10 +50,19 @@ static inline bool rect_intersect( struct rect * box1, struct rect * box2 )
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void redraw_slot_schedule_grect(struct s_redrw_slots * slots, GRECT *area)
|
||||||
|
{
|
||||||
|
redraw_slot_schedule(slots, area->g_x, area->g_y,
|
||||||
|
area->g_x + area->g_w, area->g_y + area->g_h);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
schedule redraw coords, coords are relative.
|
schedule redraw coords.
|
||||||
*/
|
*/
|
||||||
void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0, short x1, short y1)
|
void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0,
|
||||||
|
short x1, short y1)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
struct rect area;
|
struct rect area;
|
||||||
@ -94,3 +109,12 @@ void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0, shor
|
|||||||
done:
|
done:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void redraw_slots_remove_area(struct s_redrw_slots * slots, int i)
|
||||||
|
{
|
||||||
|
int x;
|
||||||
|
for(x = i+1; i<slots->areas_used; x++){
|
||||||
|
slots->areas[x-1] = slots->areas[x];
|
||||||
|
}
|
||||||
|
slots->areas_used--;
|
||||||
|
}
|
||||||
|
@ -20,6 +20,10 @@
|
|||||||
#ifndef ATARI_REDRAW_SLOTS_H
|
#ifndef ATARI_REDRAW_SLOTS_H
|
||||||
#define ATARI_REDRAW_SLOTS_H
|
#define ATARI_REDRAW_SLOTS_H
|
||||||
|
|
||||||
|
#include <mt_gem.h>
|
||||||
|
#include "utils/types.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
MAX_REDRW_SLOTS
|
MAX_REDRW_SLOTS
|
||||||
This is the number of redraw requests that the slotlist can store.
|
This is the number of redraw requests that the slotlist can store.
|
||||||
@ -40,7 +44,10 @@ struct s_redrw_slots
|
|||||||
};
|
};
|
||||||
|
|
||||||
void redraw_slots_init(struct s_redrw_slots * slots, short size);
|
void redraw_slots_init(struct s_redrw_slots * slots, short size);
|
||||||
void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0, short x1, short y1);
|
void redraw_slot_schedule(struct s_redrw_slots * slots, short x0, short y0,
|
||||||
|
short x1, short y1);
|
||||||
|
void redraw_slot_schedule_grect(struct s_redrw_slots * slots, GRECT *area);
|
||||||
|
void redraw_slots_remove_area(struct s_redrw_slots * slots, int i);
|
||||||
|
void redraw_slots_free(struct s_redrw_slots * slots);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
145
atari/rootwin.c
145
atari/rootwin.c
@ -56,6 +56,7 @@
|
|||||||
#include "atari/search.h"
|
#include "atari/search.h"
|
||||||
#include "atari/osspec.h"
|
#include "atari/osspec.h"
|
||||||
#include "atari/encoding.h"
|
#include "atari/encoding.h"
|
||||||
|
#include "atari/redrawslots.h"
|
||||||
#include "atari/toolbar.h"
|
#include "atari/toolbar.h"
|
||||||
#include "atari/gemtk/gemtk.h"
|
#include "atari/gemtk/gemtk.h"
|
||||||
|
|
||||||
@ -167,6 +168,7 @@ int window_create(struct gui_window * gw,
|
|||||||
int err = 0;
|
int err = 0;
|
||||||
bool tb, sb;
|
bool tb, sb;
|
||||||
int flags;
|
int flags;
|
||||||
|
short aes_handle;
|
||||||
|
|
||||||
tb = (inflags & WIDGET_TOOLBAR);
|
tb = (inflags & WIDGET_TOOLBAR);
|
||||||
sb = (inflags & WIDGET_STATUSBAR);
|
sb = (inflags & WIDGET_STATUSBAR);
|
||||||
@ -188,10 +190,11 @@ int window_create(struct gui_window * gw,
|
|||||||
memset( gw->root, 0, sizeof(struct s_gui_win_root) );
|
memset( gw->root, 0, sizeof(struct s_gui_win_root) );
|
||||||
gw->root->title = malloc(atari_sysinfo.aes_max_win_title_len+1);
|
gw->root->title = malloc(atari_sysinfo.aes_max_win_title_len+1);
|
||||||
// TODO: use desk size
|
// TODO: use desk size
|
||||||
short aes_handle = wind_create(flags, 40, 40, app.w, app.h);
|
|
||||||
|
aes_handle = wind_create(flags, 40, 40, app.w, app.h);
|
||||||
if(aes_handle<0) {
|
if(aes_handle<0) {
|
||||||
free( gw->root->title );
|
free(gw->root->title);
|
||||||
free( gw->root );
|
free(gw->root);
|
||||||
return( -1 );
|
return( -1 );
|
||||||
}
|
}
|
||||||
gw->root->win = guiwin_add(aes_handle,
|
gw->root->win = guiwin_add(aes_handle,
|
||||||
@ -209,17 +212,20 @@ int window_create(struct gui_window * gw,
|
|||||||
gw->browser = browser_create( gw, bw, NULL, CLT_HORIZONTAL, 1, 1 );
|
gw->browser = browser_create( gw, bw, NULL, CLT_HORIZONTAL, 1, 1 );
|
||||||
|
|
||||||
/* create statusbar component: */
|
/* create statusbar component: */
|
||||||
if( sb ) {
|
if(sb) {
|
||||||
gw->root->statusbar = sb_create( gw );
|
gw->root->statusbar = sb_create( gw );
|
||||||
} else {
|
} else {
|
||||||
gw->root->statusbar = NULL;
|
gw->root->statusbar = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Setup some window defaults:
|
||||||
wind_set_str(aes_handle, WF_ICONTITLE, (char*)"NetSurf");
|
wind_set_str(aes_handle, WF_ICONTITLE, (char*)"NetSurf");
|
||||||
wind_set(aes_handle, WF_OPTS, 1, WO0_FULLREDRAW, 0, 0);
|
wind_set(aes_handle, WF_OPTS, 1, WO0_FULLREDRAW, 0, 0);
|
||||||
wind_set(aes_handle, WF_OPTS, 1, WO0_NOBLITW, 0, 0);
|
wind_set(aes_handle, WF_OPTS, 1, WO0_NOBLITW, 0, 0);
|
||||||
wind_set(aes_handle, WF_OPTS, 1, WO0_NOBLITH, 0, 0);
|
wind_set(aes_handle, WF_OPTS, 1, WO0_NOBLITH, 0, 0);
|
||||||
|
|
||||||
|
redraw_slots_init(&gw->root->redraw_slots, 8);
|
||||||
|
|
||||||
guiwin_set_toolbar(gw->root->win, get_tree(TOOLBAR), 0, 0);
|
guiwin_set_toolbar(gw->root->win, get_tree(TOOLBAR), 0, 0);
|
||||||
struct rootwin_data_s * data = malloc(sizeof(struct rootwin_data_s));
|
struct rootwin_data_s * data = malloc(sizeof(struct rootwin_data_s));
|
||||||
data->rootwin = gw->root;
|
data->rootwin = gw->root;
|
||||||
@ -250,6 +256,7 @@ void window_unref_gui_window(ROOTWIN *rootwin, struct gui_window *gw)
|
|||||||
}
|
}
|
||||||
if(input_window == NULL){
|
if(input_window == NULL){
|
||||||
// the last gui window for this rootwin was removed:
|
// the last gui window for this rootwin was removed:
|
||||||
|
redraw_slots_free(&rootwin->redraw_slots);
|
||||||
window_destroy(rootwin);
|
window_destroy(rootwin);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -294,7 +301,7 @@ int window_destroy(ROOTWIN *rootwin)
|
|||||||
|
|
||||||
void window_open(ROOTWIN *rootwin, GRECT pos)
|
void window_open(ROOTWIN *rootwin, GRECT pos)
|
||||||
{
|
{
|
||||||
GRECT br;
|
GRECT br, g;
|
||||||
|
|
||||||
short aes_handle = guiwin_get_handle(rootwin->win);
|
short aes_handle = guiwin_get_handle(rootwin->win);
|
||||||
wind_open(aes_handle, pos.g_x, pos.g_y, pos.g_w, pos.g_h );
|
wind_open(aes_handle, pos.g_x, pos.g_y, pos.g_w, pos.g_h );
|
||||||
@ -304,6 +311,8 @@ void window_open(ROOTWIN *rootwin, GRECT pos)
|
|||||||
if(rootwin->statusbar != NULL) {
|
if(rootwin->statusbar != NULL) {
|
||||||
sb_attach(rootwin->statusbar, rootwin->active_gui_window);
|
sb_attach(rootwin->statusbar, rootwin->active_gui_window);
|
||||||
}
|
}
|
||||||
|
guiwin_get_grect(rootwin->win, GUIWIN_AREA_TOOLBAR, &g);
|
||||||
|
toolbar_set_dimensions(rootwin->toolbar, &g);
|
||||||
/*TBD: get already present content and set size? */
|
/*TBD: get already present content and set size? */
|
||||||
input_window = rootwin->active_gui_window;
|
input_window = rootwin->active_gui_window;
|
||||||
window_set_focus(rootwin, BROWSER, rootwin->active_gui_window->browser);
|
window_set_focus(rootwin, BROWSER, rootwin->active_gui_window->browser);
|
||||||
@ -465,6 +474,67 @@ void window_redraw_favicon(ROOTWIN *rootwin, GRECT *clip)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void window_schedule_redraw_grect(ROOTWIN *rootwin, GRECT *area)
|
||||||
|
{
|
||||||
|
GRECT work;
|
||||||
|
|
||||||
|
guiwin_get_grect(rootwin->win, GUIWIN_AREA_WORK, &work);
|
||||||
|
rc_intersect(area, &work);
|
||||||
|
redraw_slot_schedule_grect(&rootwin->redraw_slots, &work);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
bool window_requires_redraw(ROOTWIN * rootwin)
|
||||||
|
{
|
||||||
|
if (rootwin->redraw_slots.areas_used > 0)
|
||||||
|
return(true);
|
||||||
|
|
||||||
|
return(false);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void window_process_redraws(ROOTWIN * rootwin)
|
||||||
|
{
|
||||||
|
GRECT work, visible_ro, tb_area = {0,0,0,0};
|
||||||
|
short aes_handle, i;
|
||||||
|
bool toolbar_rdrw_required;
|
||||||
|
|
||||||
|
aes_handle = guiwin_get_handle(rootwin->win);
|
||||||
|
|
||||||
|
guiwin_get_grect(rootwin->win, GUIWIN_AREA_TOOLBAR, &tb_area);
|
||||||
|
|
||||||
|
while(plot_lock() == false);
|
||||||
|
|
||||||
|
wind_get_grect(aes_handle, WF_FIRSTXYWH, &visible_ro);
|
||||||
|
while (visible_ro.g_w > 0 && visible_ro.g_h > 0) {
|
||||||
|
|
||||||
|
// TODO: optimze the rectangle list -
|
||||||
|
// remove rectangles which were completly inside the visible area.
|
||||||
|
// that way we don't have to loop over again...
|
||||||
|
for(i=0; i<rootwin->redraw_slots.areas_used; i++){
|
||||||
|
|
||||||
|
GRECT rdrw_area = {
|
||||||
|
rootwin->redraw_slots.areas[i].x0,
|
||||||
|
rootwin->redraw_slots.areas[i].y0,
|
||||||
|
rootwin->redraw_slots.areas[i].x1 +
|
||||||
|
rootwin->redraw_slots.areas[i].x0,
|
||||||
|
rootwin->redraw_slots.areas[i].y1 +
|
||||||
|
rootwin->redraw_slots.areas[i].y0
|
||||||
|
};
|
||||||
|
GRECT visible = visible_ro;
|
||||||
|
|
||||||
|
rc_intersect(&rdrw_area, &visible);
|
||||||
|
if (rc_intersect(&tb_area, &visible)) {
|
||||||
|
toolbar_redraw(rootwin->toolbar, &visible);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
wind_get_grect(aes_handle, WF_NEXTXYWH, &visible_ro);
|
||||||
|
}
|
||||||
|
rootwin->redraw_slots.areas_used = 0;
|
||||||
|
|
||||||
|
plot_unlock();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
/* Event Handlers: */
|
/* Event Handlers: */
|
||||||
@ -632,54 +702,16 @@ static void redraw(GUIWIN *win, short msg[8])
|
|||||||
GRECT clip = {msg[4], msg[5], msg[6], msg[7]};
|
GRECT clip = {msg[4], msg[5], msg[6], msg[7]};
|
||||||
window_redraw_favicon(rootwin, &clip);
|
window_redraw_favicon(rootwin, &clip);
|
||||||
} else {
|
} else {
|
||||||
GRECT content_area, tb_area;
|
window_schedule_redraw_grect(rootwin, &clip);
|
||||||
short pxy[8];
|
|
||||||
|
|
||||||
guiwin_get_grect(win, GUIWIN_AREA_CONTENT, &content_area);
|
// TODO: remove this call when browser redraw is implemented:
|
||||||
guiwin_get_grect(win, GUIWIN_AREA_TOOLBAR, &tb_area);
|
guiwin_clear(win);
|
||||||
|
|
||||||
if (rc_intersect(&tb_area, &clip)) {
|
|
||||||
toolbar_set_dimensions(rootwin->toolbar, &tb_area);
|
|
||||||
toolbar_redraw(rootwin->toolbar, clip);
|
|
||||||
}
|
|
||||||
|
|
||||||
CMP_BROWSER browser = rootwin->active_gui_window->browser;
|
|
||||||
if (browser->reformat_pending == true) {
|
|
||||||
browser_window_reformat(browser->bw, false, content_area.g_w,
|
|
||||||
content_area.g_h );
|
|
||||||
} else {
|
|
||||||
if(rc_intersect(&content_area, &clip)){
|
|
||||||
|
|
||||||
GRECT lclip = content_area;
|
|
||||||
|
|
||||||
/* convert redraw coords to framebuffer coords: */
|
|
||||||
lclip.g_x -= content_area.g_x;
|
|
||||||
lclip.g_y -= content_area.g_y;
|
|
||||||
|
|
||||||
if( lclip.g_x < 0 ) {
|
|
||||||
lclip.g_w = content_area.g_w + lclip.g_x;
|
|
||||||
lclip.g_x = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( lclip.g_y < 0 ) {
|
|
||||||
lclip.g_h = content_area.g_h + lclip.g_y;
|
|
||||||
lclip.g_y = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
browser_schedule_redraw(rootwin->active_gui_window,
|
|
||||||
lclip.g_x, lclip.g_y,
|
|
||||||
lclip.g_x + lclip.g_w,
|
|
||||||
lclip.g_y + lclip.g_h);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//guiwin_clear(win);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void resized(GUIWIN *win)
|
static void resized(GUIWIN *win)
|
||||||
{
|
{
|
||||||
short x,y,w,h;
|
GRECT g;
|
||||||
short handle;
|
short handle;
|
||||||
struct gui_window *gw;
|
struct gui_window *gw;
|
||||||
struct rootwin_data_s *data = guiwin_get_user_data(win);
|
struct rootwin_data_s *data = guiwin_get_user_data(win);
|
||||||
@ -700,22 +732,23 @@ static void resized(GUIWIN *win)
|
|||||||
return;
|
return;
|
||||||
//assert( gw != NULL );
|
//assert( gw != NULL );
|
||||||
|
|
||||||
wind_get(handle, WF_CURRXYWH, &x, &y, &w, &h);
|
wind_get_grect(handle, WF_CURRXYWH, &g);
|
||||||
|
|
||||||
if (rootwin->loc.g_w != w || rootwin->loc.g_h != h) {
|
if (rootwin->loc.g_w != g.g_w || rootwin->loc.g_h != g.g_h) {
|
||||||
if ( gw->browser->bw->current_content != NULL ) {
|
if ( gw->browser->bw->current_content != NULL ) {
|
||||||
/* Reformat will happen when redraw is processed: */
|
/* Reformat will happen when redraw is processed: */
|
||||||
|
// TODO: call reformat directly, this was introduced because
|
||||||
|
// of bad AES knowledge, it's ok to call it directly here...
|
||||||
rootwin->active_gui_window->browser->reformat_pending = true;
|
rootwin->active_gui_window->browser->reformat_pending = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (rootwin->loc.g_x != x || rootwin->loc.g_y != y) {
|
// if (rootwin->loc.g_x != g.g_x || rootwin->loc.g_y != g.g_y) {
|
||||||
// moved
|
// // moved
|
||||||
}
|
// }
|
||||||
|
|
||||||
rootwin->loc.g_x = x;
|
rootwin->loc = g;
|
||||||
rootwin->loc.g_y = y;
|
guiwin_get_grect(win, GUIWIN_AREA_TOOLBAR, &g);
|
||||||
rootwin->loc.g_w = w;
|
toolbar_set_dimensions(rootwin->toolbar, &g);
|
||||||
rootwin->loc.g_h = h;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void __CDECL file_dropped(GUIWIN *win, short msg[8])
|
static void __CDECL file_dropped(GUIWIN *win, short msg[8])
|
||||||
|
@ -68,6 +68,8 @@ void window_set_stauts(struct s_gui_win_root * rootwin, char * text);
|
|||||||
void window_set_title(struct s_gui_win_root * rootwin, char * text);
|
void window_set_title(struct s_gui_win_root * rootwin, char * text);
|
||||||
void window_set_icon(struct s_gui_win_root * rootwin, struct bitmap * bmp );
|
void window_set_icon(struct s_gui_win_root * rootwin, struct bitmap * bmp );
|
||||||
void window_set_active_gui_window(ROOTWIN *rootwin, struct gui_window *gw);
|
void window_set_active_gui_window(ROOTWIN *rootwin, struct gui_window *gw);
|
||||||
|
void window_schedule_redraw_grect(ROOTWIN *rootwin, GRECT *area);
|
||||||
|
void window_process_redraws(ROOTWIN * rootwin);
|
||||||
struct gui_window * window_get_active_gui_window(ROOTWIN * rootwin);
|
struct gui_window * window_get_active_gui_window(ROOTWIN * rootwin);
|
||||||
void window_redraw_favicon(struct s_gui_win_root * rootwin, GRECT *clip);
|
void window_redraw_favicon(struct s_gui_win_root * rootwin, GRECT *clip);
|
||||||
void window_unref_gui_window(ROOTWIN *rootwin, struct gui_window *gw);
|
void window_unref_gui_window(ROOTWIN *rootwin, struct gui_window *gw);
|
||||||
|
@ -158,8 +158,8 @@ schedule_run(void)
|
|||||||
prev_nscb = NULL;
|
prev_nscb = NULL;
|
||||||
nexttime = cur_nscb->timeout;
|
nexttime = cur_nscb->timeout;
|
||||||
|
|
||||||
while ( cur_nscb != NULL ) {
|
while (cur_nscb != NULL) {
|
||||||
if ( now > cur_nscb->timeout ) {
|
if (now > cur_nscb->timeout) {
|
||||||
/* scheduled time */
|
/* scheduled time */
|
||||||
|
|
||||||
/* remove callback */
|
/* remove callback */
|
||||||
@ -194,7 +194,7 @@ schedule_run(void)
|
|||||||
/* if the time to the event is sooner than the
|
/* if the time to the event is sooner than the
|
||||||
* currently recorded soonest event record it
|
* currently recorded soonest event record it
|
||||||
*/
|
*/
|
||||||
if( nexttime > cur_nscb->timeout ){
|
if (nexttime > cur_nscb->timeout) {
|
||||||
nexttime = cur_nscb->timeout;
|
nexttime = cur_nscb->timeout;
|
||||||
}
|
}
|
||||||
/* move to next element */
|
/* move to next element */
|
||||||
|
@ -182,7 +182,7 @@ void sb_destroy( CMP_STATUSBAR s )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void sb_set_text( CMP_STATUSBAR sb , char * text )
|
void sb_set_text(CMP_STATUSBAR sb , const char * text)
|
||||||
{
|
{
|
||||||
|
|
||||||
LGRECT work;
|
LGRECT work;
|
||||||
@ -221,11 +221,11 @@ void sb_destroy( CMP_STATUSBAR s )
|
|||||||
|
|
||||||
void sb_attach(CMP_STATUSBAR sb, struct gui_window * gw)
|
void sb_attach(CMP_STATUSBAR sb, struct gui_window * gw)
|
||||||
{
|
{
|
||||||
sb->aes_win = gw->root->handle->handle;
|
sb->aes_win = guiwin_get_handle(gw->root->win);
|
||||||
sb->attached = true;
|
sb->attached = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void sb_set_text(CMP_STATUSBAR sb, char * text )
|
void sb_set_text(CMP_STATUSBAR sb, const char * text )
|
||||||
{
|
{
|
||||||
assert( sb != NULL );
|
assert( sb != NULL );
|
||||||
strncpy(sb->text, text, STATUSBAR_MAX_SLEN);
|
strncpy(sb->text, text, STATUSBAR_MAX_SLEN);
|
||||||
|
@ -36,6 +36,6 @@ struct s_statusbar
|
|||||||
|
|
||||||
CMP_STATUSBAR sb_create( struct gui_window * gw );
|
CMP_STATUSBAR sb_create( struct gui_window * gw );
|
||||||
void sb_destroy( CMP_STATUSBAR s );
|
void sb_destroy( CMP_STATUSBAR s );
|
||||||
void sb_set_text( CMP_STATUSBAR sb , char * text );
|
void sb_set_text( CMP_STATUSBAR sb , const char * text );
|
||||||
void sb_attach(CMP_STATUSBAR sb, struct gui_window * gw);
|
void sb_attach(CMP_STATUSBAR sb, struct gui_window * gw);
|
||||||
#endif
|
#endif
|
||||||
|
@ -117,6 +117,7 @@ struct s_toolbar
|
|||||||
int btcnt;
|
int btcnt;
|
||||||
int style;
|
int style;
|
||||||
bool redraw;
|
bool redraw;
|
||||||
|
bool reflow;
|
||||||
};
|
};
|
||||||
|
|
||||||
extern char * option_homepage_url;
|
extern char * option_homepage_url;
|
||||||
@ -410,6 +411,8 @@ void toolbar_destroy(struct s_toolbar *tb)
|
|||||||
|
|
||||||
static void toolbar_objc_reflow(struct s_toolbar *tb)
|
static void toolbar_objc_reflow(struct s_toolbar *tb)
|
||||||
{
|
{
|
||||||
|
|
||||||
|
// position toolbar areas:
|
||||||
aes_toolbar->ob_x = tb->area.g_x;
|
aes_toolbar->ob_x = tb->area.g_x;
|
||||||
aes_toolbar->ob_y = tb->area.g_y;
|
aes_toolbar->ob_y = tb->area.g_y;
|
||||||
aes_toolbar->ob_width = tb->area.g_w;
|
aes_toolbar->ob_width = tb->area.g_w;
|
||||||
@ -421,13 +424,6 @@ static void toolbar_objc_reflow(struct s_toolbar *tb)
|
|||||||
aes_toolbar[TOOLBAR_URL_AREA].ob_width = tb->area.g_w
|
aes_toolbar[TOOLBAR_URL_AREA].ob_width = tb->area.g_w
|
||||||
- (aes_toolbar[TOOLBAR_NAVIGATION_AREA].ob_width
|
- (aes_toolbar[TOOLBAR_NAVIGATION_AREA].ob_width
|
||||||
+ aes_toolbar[TOOLBAR_THROBBER_AREA].ob_width);
|
+ aes_toolbar[TOOLBAR_THROBBER_AREA].ob_width);
|
||||||
}
|
|
||||||
|
|
||||||
void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
|
|
||||||
{
|
|
||||||
// position toolbar areas:
|
|
||||||
toolbar_objc_reflow(tb);
|
|
||||||
objc_draw_grect(aes_toolbar,0,8,clip);
|
|
||||||
|
|
||||||
// position throbber image:
|
// position throbber image:
|
||||||
throbber_form[tb->throbber.index].ob_x = tb->area.g_x +
|
throbber_form[tb->throbber.index].ob_x = tb->area.g_x +
|
||||||
@ -442,10 +438,17 @@ void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
|
|||||||
((aes_toolbar[TOOLBAR_THROBBER_AREA].ob_height
|
((aes_toolbar[TOOLBAR_THROBBER_AREA].ob_height
|
||||||
- throbber_form[tb->throbber.index].ob_height) >> 1);
|
- throbber_form[tb->throbber.index].ob_height) >> 1);
|
||||||
|
|
||||||
printf("x pos: %d, y pos: %d\n", throbber_form[tb->throbber.index].ob_x,
|
tb->reflow = false;
|
||||||
throbber_form[tb->throbber.index].ob_y);
|
}
|
||||||
objc_draw_grect(&throbber_form[tb->throbber.index], 0, 1, clip);
|
|
||||||
|
|
||||||
|
void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
|
||||||
|
{
|
||||||
|
if(tb->reflow == true)
|
||||||
|
toolbar_objc_reflow(tb);
|
||||||
|
|
||||||
|
objc_draw_grect(aes_toolbar,0,8,clip);
|
||||||
|
|
||||||
|
objc_draw_grect(&throbber_form[tb->throbber.index], 0, 1, clip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -459,9 +462,7 @@ void toolbar_update_buttons(struct s_toolbar *tb, struct browser_window *bw,
|
|||||||
void toolbar_set_dimensions(struct s_toolbar *tb, GRECT *area)
|
void toolbar_set_dimensions(struct s_toolbar *tb, GRECT *area)
|
||||||
{
|
{
|
||||||
tb->area = *area;
|
tb->area = *area;
|
||||||
if (img_toolbar != 0) {
|
tb->reflow = true;
|
||||||
toolbar_reflow(tb);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -27,6 +27,7 @@ void toolbar_update_buttons(struct s_toolbar *tb, struct browser_window *bw,
|
|||||||
void toolbar_get_grect(struct s_toolbar *tb, short which, short opt, GRECT *g);
|
void toolbar_get_grect(struct s_toolbar *tb, short which, short opt, GRECT *g);
|
||||||
struct text_area *toolbar_get_textarea(struct s_toolbar *tb,
|
struct text_area *toolbar_get_textarea(struct s_toolbar *tb,
|
||||||
enum toolbar_textarea which);
|
enum toolbar_textarea which);
|
||||||
|
void toolbar_redraw(struct s_toolbar *tb, GRECT *clip);
|
||||||
/* public events handlers: */
|
/* public events handlers: */
|
||||||
void toolbar_back_click(struct s_toolbar *tb);
|
void toolbar_back_click(struct s_toolbar *tb);
|
||||||
void toolbar_reload_click(struct s_toolbar *tb);
|
void toolbar_reload_click(struct s_toolbar *tb);
|
||||||
|
Loading…
Reference in New Issue
Block a user