Finally it compiles without WinDom - still some things to bring back:
- Serch window - Pop Menus in the settings dialog
This commit is contained in:
parent
5acf36b89e
commit
0bbccaa935
|
@ -68,7 +68,7 @@ CFLAGS += -U__STRICT_ANSI__ -std=c99 -Dsmall $(WARNFLAGS) -Dnsatari \
|
|||
LDFLAGS += -lcflib -lcurl
|
||||
LDFLAGS += -lcss -lparserutils -ldom -lwapcaplet -lhubbub
|
||||
LDFLAGS += -lssl -lcrypto
|
||||
LDFLAGS += -lz -liconv -lcares -lHermes -lwindom -lgem -lm
|
||||
LDFLAGS += -lz -liconv -lcares -lHermes -lgem -lm
|
||||
LDFLAGS += -L$(GCCSDK_INSTALL_ENV)/lib
|
||||
|
||||
|
||||
|
@ -85,7 +85,6 @@ S_ATARI := \
|
|||
download.c \
|
||||
thumbnail.c \
|
||||
login.c \
|
||||
verify_ssl.c \
|
||||
treeview.c \
|
||||
hotlist.c \
|
||||
history.c\
|
||||
|
|
|
@ -22,8 +22,7 @@
|
|||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <windom.h>
|
||||
#include <assert.h>
|
||||
#include <mint/osbind.h>
|
||||
|
||||
#include "desktop/gui.h"
|
||||
|
@ -125,7 +124,8 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
char * tempfile;
|
||||
int err = 0;
|
||||
char * editor, *lastslash;
|
||||
char cmdline[PATH_MAX];
|
||||
char cmdline[PATH_MAX];
|
||||
MENU pop_menu, me_data;
|
||||
|
||||
pop = get_tree( POP_CTX );
|
||||
if (pop == NULL)
|
||||
|
@ -136,37 +136,41 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
Disable all items by default:
|
||||
*/
|
||||
for( choice = POP_FIRST_ITEM; choice<=POP_LAST_ITEM; choice++ ){
|
||||
SET_BIT(pop[ choice ].ob_state, DISABLED, 1);
|
||||
SET_BIT(pop[ choice ].ob_state, OS_DISABLED, 1);
|
||||
}
|
||||
|
||||
if( ctx->flags & CNT_INTERACTIVE ){
|
||||
SET_BIT(pop[ POP_CTX_PASTE_SEL ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_PASTE_SEL ].ob_state, OS_DISABLED, 0);
|
||||
}
|
||||
|
||||
if( (ctx->flags & CNT_BROWSER) ){
|
||||
SET_BIT(pop[ POP_CTX_SELECT_ALL ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_COPY_SEL ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_VIEW_SOURCE ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_SELECT_ALL ].ob_state, OS_DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_COPY_SEL ].ob_state, OS_DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_VIEW_SOURCE ].ob_state, OS_DISABLED, 0);
|
||||
}
|
||||
|
||||
if( ctx->flags & CNT_HREF ){
|
||||
SET_BIT(pop[ POP_CTX_COPY_LINK ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_OPEN_NEW ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_SAVE_LINK_AS ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_COPY_LINK ].ob_state, OS_DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_OPEN_NEW ].ob_state, OS_DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_SAVE_LINK_AS ].ob_state, OS_DISABLED, 0);
|
||||
}
|
||||
|
||||
if( ctx->flags & CNT_IMG ){
|
||||
SET_BIT(pop[ POP_CTX_SAVE_AS ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_COPY_URL ].ob_state, DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_OPEN_NEW ].ob_state, DISABLED, 0);
|
||||
}
|
||||
|
||||
choice = MenuPopUp(
|
||||
pop, x, y,
|
||||
-1, -1, -1,
|
||||
P_WNDW + P_CHCK
|
||||
);
|
||||
|
||||
SET_BIT(pop[ POP_CTX_SAVE_AS ].ob_state, OS_DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_COPY_URL ].ob_state, OS_DISABLED, 0);
|
||||
SET_BIT(pop[ POP_CTX_OPEN_NEW ].ob_state, OS_DISABLED, 0);
|
||||
}
|
||||
|
||||
// point mn_tree tree to states popup:
|
||||
pop_menu.mn_tree = get_tree(POP_CTX);
|
||||
pop_menu.mn_menu = 0;
|
||||
pop_menu.mn_item = POP_CTX_CUT_SEL;
|
||||
pop_menu.mn_scroll = SCROLL_LISTBOX;
|
||||
pop_menu.mn_keystate = 0;
|
||||
|
||||
menu_popup(&pop_menu, x, y, &me_data);
|
||||
choice = me_data.mn_item;
|
||||
|
||||
switch( choice ){
|
||||
case POP_CTX_COPY_SEL:
|
||||
browser_window_key_press( gw->browser->bw, KEY_COPY_SELECTION );
|
||||
|
@ -243,6 +247,7 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
if (fp_tmpfile != NULL){
|
||||
fwrite(data, size, 1, fp_tmpfile);
|
||||
fclose(fp_tmpfile );
|
||||
/*
|
||||
lastslash = strrchr(editor, '/');
|
||||
if (lastslash == NULL)
|
||||
lastslash = strrchr(editor, '\\');
|
||||
|
@ -250,16 +255,25 @@ void context_popup(struct gui_window * gw, short x, short y)
|
|||
lastslash = editor;
|
||||
else
|
||||
lastslash++;
|
||||
if(is_process_running(lastslash)){
|
||||
err = ShelWrite( editor, tempfile , editor, 1, 0);
|
||||
*/
|
||||
|
||||
if(strlen(tempfile)<=125){
|
||||
shel_write(1,1,0,editor,tempfile);
|
||||
}
|
||||
|
||||
/*if(is_process_running(lastslash)){
|
||||
if(strlen(tempfile)<=125){
|
||||
shel_write(1,1,0,editor,tempfile);
|
||||
}
|
||||
} else {
|
||||
/* check for max length of simple commandline param: */
|
||||
// check for max length of simple commandline param:
|
||||
if(strlen(tempfile)<=125){
|
||||
sprintf(cmdline, "%c%s", (char)strlen(tempfile),
|
||||
tempfile);
|
||||
Pexec(100, editor, cmdline, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
} else {
|
||||
printf("Could not open temp file: %s!\n", tempfile );
|
||||
}
|
||||
|
|
|
@ -39,7 +39,7 @@ struct s_menu_item_evnt {
|
|||
};
|
||||
|
||||
static void register_menu_str(struct s_menu_item_evnt * mi);
|
||||
static void __CDECL evnt_menu(WINDOW * win, short buff[8]);
|
||||
//static void __CDECL evnt_menu(WINDOW * win, short buff[8]);
|
||||
|
||||
extern void *h_gem_rsrc;
|
||||
extern bool html_redraw_debug;
|
||||
|
@ -152,12 +152,13 @@ static void register_menu_str( struct s_menu_item_evnt * mi )
|
|||
{
|
||||
assert(h_gem_menu != NULL);
|
||||
|
||||
char * str = ObjcString(h_gem_menu, mi->rid, NULL );
|
||||
int l = strlen(str);
|
||||
int i = l;
|
||||
int x = -1;
|
||||
struct s_accelerator * accel = &mi->accel;
|
||||
int i, l=0, x=-1;
|
||||
char str[255];
|
||||
|
||||
get_string(h_gem_menu, mi->rid, NULL);
|
||||
|
||||
i = l = strlen(str);
|
||||
while (i > 2) {
|
||||
if( str[i] == '['){
|
||||
x = i;
|
||||
|
@ -208,7 +209,7 @@ static void register_menu_str( struct s_menu_item_evnt * mi )
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
static void __CDECL evnt_menu(WINDOW * win, short buff[8])
|
||||
{
|
||||
int title = buff[3];
|
||||
|
@ -219,6 +220,7 @@ static void __CDECL evnt_menu(WINDOW * win, short buff[8])
|
|||
|
||||
deskmenu_dispatch_item(buff[3], buff[4]);
|
||||
}
|
||||
*/
|
||||
|
||||
/*
|
||||
Menu item event handlers:
|
||||
|
@ -524,7 +526,6 @@ void deskmenu_init(void)
|
|||
/* parse and update menu items: */
|
||||
i = 0;
|
||||
while( menu_evnt_tbl[i].rid != -1 ) {
|
||||
char * str = ObjcString(h_gem_menu, menu_evnt_tbl[i].rid, NULL );
|
||||
register_menu_str( &menu_evnt_tbl[i] );
|
||||
/* Update menu string if not null: */
|
||||
if( menu_evnt_tbl[i].menustr != NULL ){
|
||||
|
|
|
@ -23,8 +23,7 @@
|
|||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <windom.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "content/urldb.h"
|
||||
#include "content/fetch.h"
|
||||
|
@ -142,11 +141,11 @@ static void on_redraw(struct gui_download_window *dw, GRECT *clip)
|
|||
tree[DOWNLOAD_PROGRESS_DONE].ob_width = MAX( MIN( p*(DOWNLOAD_BAR_MAX/100),
|
||||
DOWNLOAD_BAR_MAX ), 1);
|
||||
if (dw->close_on_finish) {
|
||||
tree[DOWNLOAD_CB_CLOSE_RDY].ob_state |= (SELECTED | CROSSED);
|
||||
tree[DOWNLOAD_CB_CLOSE_RDY].ob_state |= (OS_SELECTED | OS_CROSSED);
|
||||
} else {
|
||||
tree[DOWNLOAD_CB_CLOSE_RDY].ob_state &= ~(SELECTED | CROSSED);
|
||||
tree[DOWNLOAD_CB_CLOSE_RDY].ob_state &= ~(OS_SELECTED | OS_CROSSED);
|
||||
}
|
||||
tree[DOWNLOAD_BT_ABORT].ob_state &= ~SELECTED;
|
||||
tree[DOWNLOAD_BT_ABORT].ob_state &= ~OS_SELECTED;
|
||||
|
||||
/*Walk the AES rectangle list and redraw the visible areas of the window: */
|
||||
wind_get_grect(dw->aes_handle, WF_FIRSTXYWH, &visible);
|
||||
|
@ -218,19 +217,20 @@ static char * select_filepath( const char * path, const char * filename )
|
|||
char res_file[PATH_MAX];
|
||||
char * ret = NULL;
|
||||
|
||||
|
||||
strncpy( res_path, path, PATH_MAX );
|
||||
strncpy( res_file, filename, PATH_MAX );
|
||||
strncpy(res_path, path, PATH_MAX);
|
||||
strncpy(res_file, filename, PATH_MAX);
|
||||
res_file[PATH_MAX-1] = 0;
|
||||
res_path[PATH_MAX-1] = 0;
|
||||
if( mt_FselInput( &app, res_path, res_file, (char*)"*",
|
||||
(char*)messages_get("SaveAsNS"), res_path, NULL ) ) {
|
||||
assert( (strlen( res_path ) + strlen( res_file ) + 2) < PATH_MAX );
|
||||
snprintf(tmp, PATH_MAX, "%s%s", res_path, res_file );
|
||||
ret = malloc( strlen(tmp)+1 );
|
||||
strcpy( ret, tmp );
|
||||
|
||||
if(select_file(res_path, res_file, (char*)"*",
|
||||
(char*)messages_get("SaveAsNS"), NULL)) {
|
||||
snprintf(tmp, PATH_MAX, "%s%s", res_path, res_file);
|
||||
ret = malloc(strlen(tmp)+1);
|
||||
strcpy(ret, tmp);
|
||||
}
|
||||
return( ret );
|
||||
|
||||
printf("download file: %s\n", ret);
|
||||
return(ret);
|
||||
}
|
||||
|
||||
struct gui_download_window * gui_download_window_create(download_context *ctx,
|
||||
|
|
|
@ -18,7 +18,6 @@
|
|||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
//#include "windom.h"
|
||||
#include "gemtk.h"
|
||||
#include "cflib.h"
|
||||
|
||||
|
|
|
@ -39,6 +39,12 @@ unsigned short _systype (void);
|
|||
*/
|
||||
bool rc_intersect_ro(GRECT *a, GRECT *b);
|
||||
|
||||
/*
|
||||
* Convert keycode returned by evnt_multi to ascii value
|
||||
*/
|
||||
int keybd2ascii( int keybd, int shift);
|
||||
|
||||
|
||||
#ifndef POINT_WITHIN
|
||||
# define POINT_WITHIN(_x,_y, r) ((_x >= r.g_x) && (_x <= r.g_x + r.g_w ) \
|
||||
&& (_y >= r.g_y) && (_y <= r.g_y + r.g_h))
|
||||
|
@ -183,8 +189,9 @@ void guiwin_clear(GUIWIN *win);
|
|||
/* -------------------------------------------------------------------------- */
|
||||
/* AES OBJECT TREE TOOLS */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
char *get_text(OBJECT * tree, short idx);
|
||||
GRECT * obj_screen_rect(OBJECT * tree, short obj);
|
||||
bool obj_is_inside(OBJECT * tree, short obj, GRECT *area);
|
||||
OBJECT *get_tree(int idx);
|
||||
void obj_mouse_sprite(OBJECT *tree, int index);
|
||||
#endif // GEMTK_H_INCLUDED
|
||||
|
|
|
@ -23,6 +23,31 @@
|
|||
|
||||
#include "gemtk.h"
|
||||
|
||||
char *get_text(OBJECT * tree, short idx)
|
||||
{
|
||||
static char p[]="";
|
||||
USERBLK *user;
|
||||
char *retval;
|
||||
|
||||
switch (tree[idx].ob_type & 0x00FF) {
|
||||
case G_BUTTON:
|
||||
case G_STRING:
|
||||
case G_TITLE:
|
||||
return( tree[idx].ob_spec.free_string);
|
||||
case G_TEXT:
|
||||
case G_BOXTEXT:
|
||||
case G_FTEXT:
|
||||
case G_FBOXTEXT:
|
||||
return (tree[idx].ob_spec.tedinfo->te_ptext);
|
||||
case G_ICON:
|
||||
case G_CICON:
|
||||
return (tree[idx].ob_spec.iconblk->ib_ptext);
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
return (p);
|
||||
}
|
||||
|
||||
OBJECT *get_tree(int idx)
|
||||
{
|
||||
|
@ -56,3 +81,26 @@ GRECT * obj_screen_rect(OBJECT * tree, short obj)
|
|||
|
||||
return(&obj_screen);
|
||||
}
|
||||
|
||||
|
||||
void obj_mouse_sprite(OBJECT *tree, int index)
|
||||
{
|
||||
MFORM mform;
|
||||
int dum;
|
||||
|
||||
if ((tree[index].ob_type & 0xFF) != G_ICON)
|
||||
return;
|
||||
|
||||
dum = tree[index].ob_spec.iconblk->ib_char;
|
||||
mform . mf_nplanes = 1;
|
||||
mform . mf_fg = (dum>>8)&0x0F;
|
||||
mform . mf_bg = dum>>12;
|
||||
mform . mf_xhot = 0; /* to prevent the mform to "jump" on the */
|
||||
mform . mf_yhot = 0; /* screen (zebulon rules!) */
|
||||
|
||||
for( dum = 0; dum<16; dum ++) {
|
||||
mform . mf_mask[dum] = tree[index].ob_spec.iconblk->ib_pmask[dum];
|
||||
mform . mf_data[dum] = tree[index].ob_spec.iconblk->ib_pdata[dum];
|
||||
}
|
||||
graf_mouse(USER_DEF, &mform);
|
||||
}
|
||||
|
|
|
@ -4,47 +4,63 @@
|
|||
#include <gem.h>
|
||||
#include "gemtk.h"
|
||||
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* GEM Utillity functions: */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
/* GEM Utillity functions: */
|
||||
/* -------------------------------------------------------------------------- */
|
||||
|
||||
unsigned short _systype_v;
|
||||
unsigned short _systype (void)
|
||||
{
|
||||
int32_t * cptr = NULL;
|
||||
_systype_v = SYS_TOS;
|
||||
|
||||
cptr = (int32_t *)Setexc(0x0168, -1L);
|
||||
if (cptr == NULL ) {
|
||||
return _systype_v; /* stone old TOS without any cookie support */
|
||||
}
|
||||
while (*cptr) {
|
||||
if (*cptr == C_MgMc || *cptr == C_MgMx ) {
|
||||
_systype_v = (_systype_v & ~0xF) | SYS_MAGIC;
|
||||
} else if (*cptr == C_MiNT ) {
|
||||
_systype_v = (_systype_v & ~0xF) | SYS_MINT;
|
||||
} else if (*cptr == C_Gnva /* Gnva */ ) {
|
||||
_systype_v |= SYS_GENEVA;
|
||||
} else if (*cptr == C_nAES /* nAES */ ) {
|
||||
_systype_v |= SYS_NAES;
|
||||
}
|
||||
cptr += 2;
|
||||
}
|
||||
if (_systype_v & SYS_MINT) { /* check for XaAES */
|
||||
short out = 0, u;
|
||||
if (wind_get (0, (((short)'X') <<8)|'A', &out, &u,&u,&u) && out) {
|
||||
_systype_v |= SYS_XAAES;
|
||||
}
|
||||
}
|
||||
return _systype_v;
|
||||
unsigned short _systype_v;
|
||||
unsigned short _systype (void)
|
||||
{
|
||||
int32_t * cptr = NULL;
|
||||
_systype_v = SYS_TOS;
|
||||
|
||||
cptr = (int32_t *)Setexc(0x0168, -1L);
|
||||
if (cptr == NULL ) {
|
||||
return _systype_v; /* stone old TOS without any cookie support */
|
||||
}
|
||||
while (*cptr) {
|
||||
if (*cptr == C_MgMc || *cptr == C_MgMx ) {
|
||||
_systype_v = (_systype_v & ~0xF) | SYS_MAGIC;
|
||||
} else if (*cptr == C_MiNT ) {
|
||||
_systype_v = (_systype_v & ~0xF) | SYS_MINT;
|
||||
} else if (*cptr == C_Gnva /* Gnva */ ) {
|
||||
_systype_v |= SYS_GENEVA;
|
||||
} else if (*cptr == C_nAES /* nAES */ ) {
|
||||
_systype_v |= SYS_NAES;
|
||||
}
|
||||
cptr += 2;
|
||||
}
|
||||
if (_systype_v & SYS_MINT) { /* check for XaAES */
|
||||
short out = 0, u;
|
||||
if (wind_get (0, (((short)'X') <<8)|'A', &out, &u,&u,&u) && out) {
|
||||
_systype_v |= SYS_XAAES;
|
||||
}
|
||||
}
|
||||
return _systype_v;
|
||||
}
|
||||
|
||||
bool rc_intersect_ro(GRECT *a, GRECT *b)
|
||||
{
|
||||
GRECT r1, r2;
|
||||
GRECT r1, r2;
|
||||
|
||||
r1 = *a;
|
||||
r2 = *b;
|
||||
r1 = *a;
|
||||
r2 = *b;
|
||||
|
||||
return((bool)rc_intersect(&r1, &r2));
|
||||
return((bool)rc_intersect(&r1, &r2));
|
||||
}
|
||||
|
||||
|
||||
typedef struct {
|
||||
char *unshift;
|
||||
char *shift;
|
||||
char *capslock;
|
||||
} MY_KEYTAB;
|
||||
|
||||
int keybd2ascii( int keybd, int shift)
|
||||
{
|
||||
|
||||
MY_KEYTAB *key;
|
||||
key = (MY_KEYTAB *)Keytbl( (char*)-1, (char*)-1, (char*)-1);
|
||||
return (shift)?key->shift[keybd>>8]:key->unshift[keybd>>8];
|
||||
}
|
||||
|
||||
|
|
56
atari/gui.c
56
atari/gui.c
|
@ -28,7 +28,6 @@
|
|||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <windom.h>
|
||||
#include <hubbub/hubbub.h>
|
||||
|
||||
#include "content/urldb.h"
|
||||
|
@ -63,7 +62,6 @@
|
|||
#include "atari/rootwin.h"
|
||||
#include "atari/statusbar.h"
|
||||
#include "atari/toolbar.h"
|
||||
#include "atari/verify_ssl.h"
|
||||
#include "atari/hotlist.h"
|
||||
#include "atari/history.h"
|
||||
#include "atari/login.h"
|
||||
|
@ -562,8 +560,9 @@ void gui_window_set_url(struct gui_window *w, const char *url)
|
|||
|
||||
static void throbber_advance( void * data )
|
||||
{
|
||||
LGRECT work;
|
||||
|
||||
struct gui_window * gw = (struct gui_window *)data;
|
||||
|
||||
if (gw->root == NULL)
|
||||
return;
|
||||
if (gw->root->toolbar == NULL)
|
||||
|
@ -851,10 +850,7 @@ void gui_cert_verify(nsurl *url, const struct ssl_cert_info *certs,
|
|||
LOG((""));
|
||||
|
||||
bool bres;
|
||||
/*bres = verify_ssl_form_do(url, certs, num);
|
||||
if( bres )
|
||||
urldb_set_cert_permissions(url, true);
|
||||
*/
|
||||
|
||||
// TODO: localize string
|
||||
int b = form_alert(1, "[2][SSL Verify failed, continue?][Continue|Abort]");
|
||||
bres = (b==1)? true : false;
|
||||
|
@ -921,7 +917,8 @@ process_cmdline(int argc, char** argv)
|
|||
option_window_x = nsoption_int(window_x);
|
||||
option_window_y = nsoption_int(window_y);
|
||||
|
||||
if (option_window_width <= app.w && option_window_height < app.h) {
|
||||
if (option_window_width <= desk_area.g_w
|
||||
&& option_window_height < desk_area.g_h) {
|
||||
set_default_dimensions = false;
|
||||
}
|
||||
}
|
||||
|
@ -929,10 +926,10 @@ process_cmdline(int argc, char** argv)
|
|||
if (set_default_dimensions) {
|
||||
if( sys_type() == SYS_TOS ) {
|
||||
/* on single tasking OS, start as fulled window: */
|
||||
option_window_width = app.w;
|
||||
option_window_height = app.h-20;
|
||||
option_window_x = app.w/2-(option_window_width/2);
|
||||
option_window_y = (app.h/2)-(option_window_height/2);
|
||||
option_window_width = desk_area.g_w;
|
||||
option_window_height = desk_area.g_h;
|
||||
option_window_x = desk_area.g_w/2-(option_window_width/2);
|
||||
option_window_y = (desk_area.g_h/2)-(option_window_height/2);
|
||||
} else {
|
||||
option_window_width = 600;
|
||||
option_window_height = 360;
|
||||
|
@ -1019,6 +1016,8 @@ static void gui_init(int argc, char** argv)
|
|||
die("Uable to open GEM Resource file!");
|
||||
}
|
||||
|
||||
wind_get_grect(0, WF_WORKXYWH, &desk_area);
|
||||
|
||||
create_cursor(0, POINT_HAND, NULL, &gem_cursors.hand );
|
||||
create_cursor(0, TEXT_CRSR, NULL, &gem_cursors.ibeam );
|
||||
create_cursor(0, THIN_CROSS, NULL, &gem_cursors.cross);
|
||||
|
@ -1060,16 +1059,19 @@ static void gui_init(int argc, char** argv)
|
|||
if (process_cmdline(argc,argv) != true)
|
||||
die("unable to process command line.\n");
|
||||
|
||||
LOG(("Initializing NKC..."));
|
||||
nkc_init();
|
||||
|
||||
|
||||
LOG(("Initializing plotters..."));
|
||||
plot_init(nsoption_charp(atari_font_driver));
|
||||
|
||||
tree_set_icon_dir(nsoption_charp(tree_icons_path));
|
||||
|
||||
wind_get_grect(0, WF_WORKXYWH, &desk_area);
|
||||
aes_event_in.emi_m1leave = MO_LEAVE;
|
||||
aes_event_in.emi_m1.g_w = 1;
|
||||
aes_event_in.emi_m1.g_h = 1;
|
||||
next_poll = clock() + (CLOCKS_PER_SEC>>3);
|
||||
|
||||
//next_poll = clock() + (CLOCKS_PER_SEC>>3);
|
||||
}
|
||||
|
||||
static char *theapp = (char*)"NetSurf";
|
||||
|
@ -1103,26 +1105,40 @@ int main(int argc, char** argv)
|
|||
freopen("stdout.log", "a+", stdout);
|
||||
freopen("stderr.log", "a+", stderr);
|
||||
#endif
|
||||
// todo: replace with appl_init
|
||||
ApplInit();
|
||||
gl_apid = _AESapid;
|
||||
|
||||
graf_mouse(BUSY_BEE, NULL);
|
||||
|
||||
init_app(NULL);
|
||||
|
||||
init_os_info();
|
||||
|
||||
atari_find_resource((char*)&messages, "messages", "res/messages");
|
||||
atari_find_resource((char*)&options, "Choices", "Choices");
|
||||
|
||||
LOG(("Initialising core..."));
|
||||
netsurf_init(&argc, &argv, options, messages);
|
||||
|
||||
LOG(("Initializing GUI..."));
|
||||
gui_init(argc, argv);
|
||||
|
||||
LOG(("Initializing GUI2"));
|
||||
gui_init2(argc, argv);
|
||||
browser_window_create(option_homepage_url, 0, 0, true, false);
|
||||
|
||||
graf_mouse( ARROW , NULL);
|
||||
|
||||
LOG(("Creating initial browser window..."));
|
||||
browser_window_create(option_homepage_url, 0, 0, true, false);
|
||||
|
||||
LOG(("Entering NetSurf mainloop..."));
|
||||
netsurf_main_loop();
|
||||
|
||||
netsurf_exit();
|
||||
LOG(("ApplExit"));
|
||||
ApplExit();
|
||||
#ifdef WITH_DBG_LOGFILE
|
||||
fclose(stdout);
|
||||
fclose(stderr);
|
||||
#endif
|
||||
exit_gem();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
27
atari/misc.c
27
atari/misc.c
|
@ -21,9 +21,9 @@
|
|||
#include <stdio.h>
|
||||
#include <stdbool.h>
|
||||
#include <string.h>
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <mint/osbind.h>
|
||||
#include <windom.h>
|
||||
#include <mint/osbind.h>
|
||||
|
||||
#include "content/content.h"
|
||||
#include "content/hlcache.h"
|
||||
|
@ -36,7 +36,8 @@
|
|||
#include "utils/utils.h"
|
||||
#include "utils/url.h"
|
||||
#include "utils/log.h"
|
||||
#include "content/fetch.h"
|
||||
#include "content/fetch.h"
|
||||
|
||||
#include "atari/gui.h"
|
||||
#include "atari/toolbar.h"
|
||||
|
||||
|
@ -321,8 +322,8 @@ void gem_set_cursor( MFORM_EX * cursor )
|
|||
static int number = 255;
|
||||
if( flags == cursor->flags && number == cursor->number )
|
||||
return;
|
||||
if( cursor->flags & MFORM_EX_FLAG_USERFORM ) {
|
||||
MouseSprite( cursor->tree, cursor->number);
|
||||
if( cursor->flags & MFORM_EX_FLAG_USERFORM ) {
|
||||
obj_mouse_sprite(cursor->tree, cursor->number);
|
||||
} else {
|
||||
graf_mouse(cursor->number, NULL );
|
||||
}
|
||||
|
@ -472,7 +473,8 @@ long nkc_to_input_key(short nkc, long * ucs4_out)
|
|||
* \param name Default file name
|
||||
* \return a static char pointer or null if the user aborted the selection.
|
||||
*/
|
||||
const char * file_select( const char * title, const char * name ) {
|
||||
const char * file_select(const char * title, const char * name ) {
|
||||
|
||||
static char path[PATH_MAX]=""; // First usage : current directory
|
||||
static char fullname[PATH_MAX]="";
|
||||
char tmpname[255];
|
||||
|
@ -481,26 +483,21 @@ const char * file_select( const char * title, const char * name ) {
|
|||
if( strlen(name)>254)
|
||||
return( NULL );
|
||||
|
||||
strcpy( tmpname, name );
|
||||
strcpy(tmpname, name);
|
||||
|
||||
if( use_title == NULL ){
|
||||
use_title = (char*)"";
|
||||
}
|
||||
|
||||
if( FselInput( path, tmpname, (char*)"", use_title, NULL, NULL)) {
|
||||
if (select_file(path, tmpname, (char*)"*", use_title, NULL)) {
|
||||
snprintf(fullname, PATH_MAX, "%s%s", path, tmpname);
|
||||
return( (const char*)&fullname );
|
||||
return((const char*)&fullname);
|
||||
}
|
||||
|
||||
return( NULL );
|
||||
}
|
||||
|
||||
|
||||
void dbg_lgrect( char * str, LGRECT * r )
|
||||
{
|
||||
printf("%s: x: %d, y: %d, w: %d, h: %d\n", str,
|
||||
r->g_x, r->g_y, r->g_w, r->g_h );
|
||||
}
|
||||
|
||||
void dbg_grect(const char * str, GRECT * r)
|
||||
{
|
||||
printf("%s: x: %d, y: %d, w: %d, h: %d (x2: %d, y2: %d)\n", str,
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
#ifndef NS_ATARI_MISC_H
|
||||
#define NS_ATARI_MISC_H
|
||||
|
||||
#include <windom.h>
|
||||
#include "cflib.h"
|
||||
#include "content/content.h"
|
||||
#include "content/hlcache.h"
|
||||
|
@ -49,7 +48,6 @@ void gem_set_cursor( MFORM_EX * cursor );
|
|||
hlcache_handle *load_icon( const char *name, hlcache_handle_callback cb,
|
||||
void * pw );
|
||||
void dbg_grect(const char * str, GRECT * r);
|
||||
void dbg_lgrect( char * str, LGRECT * r);
|
||||
void dbg_pxy(const char * str, short * pxy);
|
||||
void dbg_rect(const char * str, int * pxy);
|
||||
void * ldg_open( char * name, short * global );
|
||||
|
|
|
@ -25,7 +25,6 @@
|
|||
#include <string.h>
|
||||
#include <mint/osbind.h>
|
||||
#include <mint/cookie.h>
|
||||
#include <windom.h>
|
||||
|
||||
#include "utils/log.h"
|
||||
#include "atari/osspec.h"
|
||||
|
|
|
@ -25,8 +25,6 @@
|
|||
|
||||
#include "utils/utf8.h"
|
||||
#include "utils/log.h"
|
||||
|
||||
#include <windom.h>
|
||||
|
||||
extern unsigned long atari_plot_flags;
|
||||
extern int atari_plot_vdi_handle;
|
||||
|
|
|
@ -22,7 +22,8 @@
|
|||
#include <limits.h>
|
||||
#include <math.h>
|
||||
#include <stdbool.h>
|
||||
#include <windom.h>
|
||||
|
||||
#include <mt_gem.h>
|
||||
|
||||
#include "image/bitmap.h"
|
||||
#include "utils/log.h"
|
||||
|
@ -36,6 +37,8 @@
|
|||
#include "desktop/options.h"
|
||||
#include "atari/plot/plot.h"
|
||||
|
||||
void vq_scrninfo(VdiHdl handle, short *work_out);
|
||||
|
||||
struct s_view {
|
||||
short x; /* drawing (screen) offset x */
|
||||
short y; /* drawing (screen) offset y */
|
||||
|
@ -166,7 +169,7 @@ static HermesHandle hermes_res_h;
|
|||
static short prev_vdi_clip[4];
|
||||
static struct bitmap snapshot;
|
||||
|
||||
int atari_plot_vdi_handle;
|
||||
VdiHdl atari_plot_vdi_handle = -1;
|
||||
unsigned long atari_plot_flags;
|
||||
unsigned long atari_font_flags;
|
||||
|
||||
|
@ -740,7 +743,7 @@ static MFDB * snapshot_create_std_mfdb(int x, int y, int w, int h)
|
|||
/* allocate memory for the snapshot */
|
||||
{
|
||||
int scr_stride = MFDB_STRIDE( w );
|
||||
int scr_size = ( ((scr_stride >> 3) * h) * app.nplanes );
|
||||
int scr_size = ( ((scr_stride >> 3) * h) * vdi_sysinfo.scr_bpp );
|
||||
if(size_buf_std == 0 ){
|
||||
/* init screen mfdb */
|
||||
buf_std.fd_addr = malloc( scr_size );
|
||||
|
@ -757,7 +760,7 @@ static MFDB * snapshot_create_std_mfdb(int x, int y, int w, int h)
|
|||
size_buf_std = 0;
|
||||
return( NULL );
|
||||
}
|
||||
buf_std.fd_nplanes = app.nplanes;
|
||||
buf_std.fd_nplanes = 8;
|
||||
buf_std.fd_w = scr_stride;
|
||||
buf_std.fd_h = h;
|
||||
buf_std.fd_stand = 1;
|
||||
|
@ -767,7 +770,7 @@ static MFDB * snapshot_create_std_mfdb(int x, int y, int w, int h)
|
|||
MFDB * native = snapshot_create_native_mfdb(x,y,w,h );
|
||||
assert( native );
|
||||
|
||||
vr_trnfm(atari_plot_vdi_handle, native, &buf_std );
|
||||
vr_trnfm(atari_plot_vdi_handle, native, &buf_std);
|
||||
return( &buf_std );
|
||||
}
|
||||
|
||||
|
@ -1445,7 +1448,7 @@ bool plot_blit_mfdb(GRECT * loc, MFDB * insrc, unsigned char fgcolor,
|
|||
MFDB screen, tran;
|
||||
MFDB * src;
|
||||
short pxy[8];
|
||||
short c[2] = {fgcolor, WHITE};
|
||||
short c[2] = {fgcolor, G_WHITE};
|
||||
GRECT off;
|
||||
|
||||
plot_get_clip_grect(&off);
|
||||
|
@ -1515,7 +1518,15 @@ int plot_init(char * fdrvrname)
|
|||
if( nsoption_int(atari_font_monochrom) == 1 )
|
||||
atari_font_flags |= FONTPLOT_FLAG_MONOGLYPH;
|
||||
|
||||
atari_plot_vdi_handle = app.graf.handle;
|
||||
if(atari_plot_vdi_handle == -1) {
|
||||
|
||||
short dummy;
|
||||
short work_in[12] = {Getrez()+2,1,1,1,1,1,1,1,1,1,2,1};
|
||||
short work_out[57];
|
||||
atari_plot_vdi_handle=graf_handle(&dummy, &dummy, &dummy, &dummy);
|
||||
v_opnvwk(work_in, &atari_plot_vdi_handle, work_out);
|
||||
LOG(("Plot VDI handle: %d", atari_plot_vdi_handle));
|
||||
}
|
||||
read_vdi_sysinfo(atari_plot_vdi_handle, &vdi_sysinfo);
|
||||
if(verbose_log) {
|
||||
dump_vdi_info(atari_plot_vdi_handle) ;
|
||||
|
@ -1530,7 +1541,7 @@ int plot_init(char * fdrvrname)
|
|||
}
|
||||
|
||||
memset(&view, 0, sizeof(struct s_view));
|
||||
atari_plot_bpp_virt = app.nplanes;
|
||||
atari_plot_bpp_virt = vdi_sysinfo.scr_bpp;
|
||||
view.x = loc_pos.g_x;
|
||||
view.y = loc_pos.g_y;
|
||||
view.w = loc_pos.g_w;
|
||||
|
@ -1557,14 +1568,14 @@ int plot_init(char * fdrvrname)
|
|||
assert(Hermes_Init());
|
||||
|
||||
#ifdef WITH_8BPP_SUPPORT
|
||||
bitmap_convert = (app.nplanes > 8) ? bitmap_convert_tc : bitmap_convert_8;
|
||||
bitmap_convert = (vdi_sysinfo.scr_bpp > 8) ? bitmap_convert_tc : bitmap_convert_8;
|
||||
|
||||
/* Setup color lookup tables and palette */
|
||||
i = 0;
|
||||
unsigned char * col;
|
||||
unsigned char rgbcol[4];
|
||||
unsigned char graytone=0;
|
||||
if( app.nplanes <= 8 ){
|
||||
if( vdi_sysinfo.scr_bpp <= 8 ){
|
||||
for( i=0; i<=255; i++ ) {
|
||||
|
||||
// get the current color and save it for restore:
|
||||
|
@ -1573,7 +1584,7 @@ int plot_init(char * fdrvrname)
|
|||
pal[i][0] = sys_pal[i][0];
|
||||
pal[i][1] = sys_pal[i][1];
|
||||
pal[i][2] = sys_pal[i][2];
|
||||
} else if( app.nplanes >= 8 ) {
|
||||
} else if( vdi_sysinfo.scr_bpp >= 8 ) {
|
||||
if ( i < OFFSET_CUST_PAL ){
|
||||
pal[i][0] = vdi_web_pal[i-OFFSET_WEB_PAL][0];
|
||||
pal[i][1] = vdi_web_pal[i-OFFSET_WEB_PAL][1];
|
||||
|
|
|
@ -24,7 +24,6 @@
|
|||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <windom.h>
|
||||
#include <assert.h>
|
||||
#include <mint/osbind.h>
|
||||
#include <mint/cookie.h>
|
||||
|
|
|
@ -17,10 +17,11 @@
|
|||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "windom.h"
|
||||
#include "utils/types.h"
|
||||
#include "atari/redrawslots.h"
|
||||
|
||||
#include "atari/gemtk/gemtk.h"
|
||||
|
||||
void redraw_slots_init(struct s_redrw_slots * slots, short size)
|
||||
{
|
||||
// TODO: allocate slots dynamically!
|
||||
|
|
Binary file not shown.
|
@ -3,7 +3,7 @@ ResourceMaster v3.65
|
|||
#N 99@32@AZAaza___ _@AZAaza090___ _@@_@
|
||||
#FoC-Header@rsm2out@C-Header@rsh@@@[C-Header@0@
|
||||
#R 0@0@2@1@2@1@
|
||||
#M 20010100@0@7728@629@
|
||||
#M 20010100@0@7728@630@
|
||||
#T 0@1@MAINMENU@@62@@
|
||||
#O 4@32@T_FILE@@
|
||||
#O 5@32@T_EDIT@@
|
||||
|
@ -238,4 +238,4 @@ ResourceMaster v3.65
|
|||
#O 92@29@EDIT_CA_BUNDLE@@
|
||||
#O 93@29@EDIT_CA_CERTS_PATH@@
|
||||
#O 94@29@EDIT_EDITOR@@
|
||||
#c 20608@
|
||||
#c 20720@
|
||||
|
|
|
@ -30,11 +30,12 @@
|
|||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdbool.h>
|
||||
#include <windom.h>
|
||||
#include <assert.h>
|
||||
#include <math.h>
|
||||
#include <osbind.h>
|
||||
|
||||
#include <mt_gem.h>
|
||||
|
||||
#include "utils/log.h"
|
||||
#include "desktop/gui.h"
|
||||
#include "desktop/history_core.h"
|
||||
|
@ -67,6 +68,7 @@
|
|||
|
||||
extern struct gui_window *input_window;
|
||||
extern EVMULT_OUT aes_event_out;
|
||||
extern GRECT desk_area;
|
||||
|
||||
struct rootwin_data_s {
|
||||
struct s_gui_win_root *rootwin;
|
||||
|
@ -231,8 +233,8 @@ int window_create(struct gui_window * gw,
|
|||
|
||||
redraw_slots_init(&gw->root->redraw_slots, 8);
|
||||
|
||||
// TODO: use desk size
|
||||
gw->root->aes_handle = wind_create(flags, 40, 40, app.w, app.h);
|
||||
gw->root->aes_handle = wind_create(flags, 40, 40, desk_area.g_w,
|
||||
desk_area.g_h);
|
||||
if(gw->root->aes_handle<0) {
|
||||
free(gw->root->title);
|
||||
free(gw->root);
|
||||
|
@ -245,8 +247,8 @@ int window_create(struct gui_window * gw,
|
|||
data->rootwin = gw->root;
|
||||
guiwin_set_user_data(gw->root->win, (void*)data);
|
||||
struct guiwin_scroll_info_s *slid = guiwin_get_scroll_info(gw->root->win);
|
||||
slid->y_unit_px = 16;
|
||||
slid->x_unit_px = 16;
|
||||
slid->y_unit_px = 32;
|
||||
slid->x_unit_px = 32;
|
||||
|
||||
/* create toolbar component: */
|
||||
guiwin_set_toolbar(gw->root->win, get_tree(TOOLBAR), 0, 0);
|
||||
|
@ -277,7 +279,7 @@ int window_create(struct gui_window * gw,
|
|||
}
|
||||
|
||||
// Setup some window defaults:
|
||||
wind_set_str(gw->root->aes_handle, WF_ICONTITLE, (char*)"NetSurf");
|
||||
wind_set_str(gw->root->aes_handle, WF_NAME, (char*)"NetSurf");
|
||||
wind_set(gw->root->aes_handle, WF_OPTS, 1, WO0_FULLREDRAW, 0, 0);
|
||||
wind_set(gw->root->aes_handle, WF_OPTS, 1, WO0_NOBLITW, 0, 0);
|
||||
wind_set(gw->root->aes_handle, WF_OPTS, 1, WO0_NOBLITH, 0, 0);
|
||||
|
@ -351,7 +353,6 @@ int window_destroy(ROOTWIN *rootwin)
|
|||
}
|
||||
|
||||
|
||||
|
||||
void window_open(ROOTWIN *rootwin, GRECT pos)
|
||||
{
|
||||
GRECT br, g;
|
||||
|
@ -375,7 +376,6 @@ void window_open(ROOTWIN *rootwin, GRECT pos)
|
|||
}
|
||||
|
||||
|
||||
|
||||
/* update back forward buttons (see tb_update_buttons (bug) ) */
|
||||
void window_update_back_forward(struct s_gui_win_root *rootwin)
|
||||
{
|
||||
|
@ -423,12 +423,17 @@ void window_scroll_by(ROOTWIN *root, int sx, int sy)
|
|||
guiwin_update_slider(root->win, GUIWIN_VH_SLIDER);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the dimensions of the scrollable content.
|
||||
*
|
||||
*/
|
||||
void window_set_content_size(ROOTWIN *rootwin, int width, int height)
|
||||
{
|
||||
GRECT area;
|
||||
struct guiwin_scroll_info_s *slid = guiwin_get_scroll_info(rootwin->win);
|
||||
|
||||
guiwin_get_grect(rootwin->win, GUIWIN_AREA_CONTENT, &area);
|
||||
|
||||
slid->x_units = (width/slid->x_unit_px);
|
||||
slid->y_units = (height/slid->y_unit_px);
|
||||
if(slid->x_units < slid->x_pos)
|
||||
|
@ -436,7 +441,6 @@ void window_set_content_size(ROOTWIN *rootwin, int width, int height)
|
|||
if(slid->y_units < slid->y_pos)
|
||||
slid->y_pos = 0;
|
||||
guiwin_update_slider(rootwin->win, GUIWIN_VH_SLIDER);
|
||||
// TODO: reset slider to 0
|
||||
}
|
||||
|
||||
/* set focus to an arbitary element */
|
||||
|
@ -684,7 +688,7 @@ void window_place_caret(ROOTWIN *rootwin, short mode, int content_x,
|
|||
int i, scroll_x, scroll_y;
|
||||
uint16_t *fd_addr;
|
||||
struct guiwin_scroll_info_s *slid;
|
||||
short colors[2] = {BLACK, WHITE};
|
||||
short colors[2] = {G_BLACK, G_WHITE};
|
||||
bool render_required = false;
|
||||
|
||||
// avoid duplicate draw of the caret:
|
||||
|
|
|
@ -29,7 +29,6 @@
|
|||
#include <string.h>
|
||||
#include <stdbool.h>
|
||||
#include <assert.h>
|
||||
#include <windom.h>
|
||||
|
||||
#include "desktop/gui.h"
|
||||
#include "desktop/browser.h"
|
||||
|
@ -140,6 +139,23 @@ static SEARCH_FORM_SESSION get_search_session(GUIWIN * win)
|
|||
{
|
||||
return (current);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void set_text( short idx, char * text, int len )
|
||||
{
|
||||
char spare[255];
|
||||
|
||||
if( len > 254 )
|
||||
len = 254;
|
||||
if( text != NULL ){
|
||||
strncpy(spare, text, 254);
|
||||
} else {
|
||||
strcpy(spare, "");
|
||||
}
|
||||
|
||||
set_string(dlgtree, idx, spare);
|
||||
}
|
||||
|
||||
static void destroy_search_session(SEARCH_FORM_SESSION s)
|
||||
{
|
||||
|
@ -151,27 +167,27 @@ static void destroy_search_session(SEARCH_FORM_SESSION s)
|
|||
|
||||
static int apply_form(GUIWIN *win, struct s_search_form_state * s)
|
||||
{
|
||||
OBJECT * obj = dlgtree;
|
||||
OBJECT * obj = dlgtree;
|
||||
char * cstr;
|
||||
|
||||
if( obj == NULL ){
|
||||
goto error;
|
||||
}
|
||||
s->flags = 0;
|
||||
if( (obj[SEARCH_CB_FWD].ob_state & SELECTED) != 0 )
|
||||
s->flags = SEARCH_FLAG_FORWARDS;
|
||||
if( (obj[SEARCH_CB_CASESENSE].ob_state & SELECTED) != 0 )
|
||||
s->flags |= SEARCH_FLAG_CASE_SENSITIVE;
|
||||
if( (obj[SEARCH_CB_SHOWALL].ob_state & SELECTED) != 0 )
|
||||
s->flags |= SEARCH_FLAG_SHOWALL;
|
||||
}
|
||||
|
||||
char * cstr = ObjcString( obj, SEARCH_TB_SRCH, NULL );
|
||||
if( cstr != NULL ) {
|
||||
strncpy((char*)&s->text[0], cstr, 31 );
|
||||
}
|
||||
s->flags = 0;
|
||||
if( (obj[SEARCH_CB_FWD].ob_state & OS_SELECTED) != 0 )
|
||||
s->flags = SEARCH_FLAG_FORWARDS;
|
||||
if( (obj[SEARCH_CB_CASESENSE].ob_state & OS_SELECTED) != 0 )
|
||||
s->flags |= SEARCH_FLAG_CASE_SENSITIVE;
|
||||
if( (obj[SEARCH_CB_SHOWALL].ob_state & OS_SELECTED) != 0 )
|
||||
s->flags |= SEARCH_FLAG_SHOWALL;
|
||||
|
||||
cstr = get_text(dlgtree, SEARCH_TB_SRCH);
|
||||
snprintf(s->text, 31, "%s", cstr);
|
||||
return ( 0 );
|
||||
|
||||
error:
|
||||
s->flags = SEARCH_FLAG_FORWARDS;
|
||||
/* s->forward = true; */
|
||||
strncpy((char*)&s->text[0], "", 31 );
|
||||
return( 1 );
|
||||
}
|
||||
|
@ -183,9 +199,9 @@ static bool form_changed(GUIWIN * w)
|
|||
struct s_search_form_state cur;
|
||||
SEARCH_FORM_SESSION s = get_search_session(w);
|
||||
if( s == NULL )
|
||||
return false;
|
||||
OBJECT * obj = (OC_FORM, w);
|
||||
assert( s != NULL && obj != NULL );
|
||||
return false;
|
||||
OBJECT * obj = dlgtree;
|
||||
assert(s != NULL && obj != NULL);
|
||||
uint32_t flags_old = s->state.flags;
|
||||
apply_form(w, &cur);
|
||||
|
||||
|
@ -196,7 +212,8 @@ static bool form_changed(GUIWIN * w)
|
|||
return( true );
|
||||
}
|
||||
|
||||
char * cstr = ObjcString( obj, SEARCH_TB_SRCH, NULL );
|
||||
char * cstr;
|
||||
cstr = get_text(obj, SEARCH_TB_SRCH);
|
||||
if (cstr != NULL){
|
||||
if (strcmp(cstr, (char*)&s->state.text) != 0) {
|
||||
return (true);
|
||||
|
@ -207,7 +224,7 @@ static bool form_changed(GUIWIN * w)
|
|||
}
|
||||
|
||||
|
||||
static void __CDECL evnt_bt_srch_click( WINDOW *win, int index, int unused, void *unused2)
|
||||
static void __CDECL evnt_bt_srch_click(GUIWIN * win, int index, int unused, void *unused2)
|
||||
{
|
||||
|
||||
bool fwd;
|
||||
|
@ -215,31 +232,31 @@ static void __CDECL evnt_bt_srch_click( WINDOW *win, int index, int unused, void
|
|||
OBJECT * obj = dlgtree;
|
||||
search_flags_t flags = 0;
|
||||
|
||||
ObjcChange(OC_FORM, win, index, ~SELECTED , TRUE);
|
||||
|
||||
if( form_changed(searchwin) ){
|
||||
browser_window_search_destroy_context(s->bw);
|
||||
apply_form(searchwin, &s->state );
|
||||
apply_form(searchwin, &s->state);
|
||||
} else {
|
||||
/* get search direction manually: */
|
||||
if( (obj[SEARCH_CB_FWD].ob_state & SELECTED) != 0 )
|
||||
if( (obj[SEARCH_CB_FWD].ob_state & OS_SELECTED) != 0 )
|
||||
s->state.flags |= SEARCH_FLAG_FORWARDS;
|
||||
else
|
||||
s->state.flags &= (~SEARCH_FLAG_FORWARDS);
|
||||
}
|
||||
if( browser_window_search_verify_new(s->bw, &nsatari_search_callbacks, s) ){
|
||||
browser_window_search_step(s->bw, s->state.flags, ObjcString( obj, SEARCH_TB_SRCH, NULL ) );
|
||||
browser_window_search_step(s->bw, s->state.flags, get_text(obj, SEARCH_TB_SRCH));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void __CDECL evnt_cb_click( WINDOW *win, int index, int unused, void *unused2)
|
||||
static void __CDECL evnt_cb_click(GUIWIN *win, int index, int unused, void *unused2)
|
||||
{
|
||||
|
||||
short newstate;
|
||||
|
||||
}
|
||||
|
||||
static void __CDECL evnt_close( WINDOW *win, short buff[8])
|
||||
static void __CDECL evnt_close(GUIWIN *win, short buff[8])
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -322,7 +339,7 @@ SEARCH_FORM_SESSION open_browser_search(struct gui_window * gw)
|
|||
EvntAdd(sfs->formwind, WM_CLOSED, evnt_close, EV_TOP);
|
||||
*/
|
||||
apply_form(searchwin, &sfs->state );
|
||||
set_string(dlgtree, SEARCH_TB_SRCH, "");
|
||||
set_text(SEARCH_TB_SRCH, "", 31);
|
||||
|
||||
return( current );
|
||||
|
||||
|
|
|
@ -95,33 +95,7 @@ static void set_text( short idx, char * text, int len )
|
|||
set_string( dlgtree, idx, spare);
|
||||
}
|
||||
|
||||
|
||||
|
||||
static char *get_text(OBJECT * tree, short idx)
|
||||
{
|
||||
static char p[]="";
|
||||
USERBLK *user;
|
||||
char *retval;
|
||||
|
||||
switch (tree[idx].ob_type & 0x00FF) {
|
||||
case G_BUTTON:
|
||||
case G_STRING:
|
||||
case G_TITLE:
|
||||
return( tree[idx].ob_spec.free_string);
|
||||
case G_TEXT:
|
||||
case G_BOXTEXT:
|
||||
case G_FTEXT:
|
||||
case G_FBOXTEXT:
|
||||
return (tree[idx].ob_spec.tedinfo->te_ptext);
|
||||
case G_ICON:
|
||||
case G_CICON:
|
||||
return (tree[idx].ob_spec.iconblk->ib_ptext);
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
return (p);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
|
@ -297,7 +271,8 @@ static void form_event(int index, int external)
|
|||
const char *locales[] = {
|
||||
"cs", "de", "de-de" , "en", "en-gb", "en-us", "es",
|
||||
"fr", "it", "nl", "no", "pl", "ru", "sk", "sv"
|
||||
};
|
||||
};
|
||||
|
||||
int num_locales = (sizeof(locales)/sizeof(char*));
|
||||
short x, y;
|
||||
int choice;
|
||||
|
@ -351,17 +326,20 @@ static void form_event(int index, int external)
|
|||
|
||||
case SETTINGS_BT_SEL_FONT_RENDERER:
|
||||
if( external ){
|
||||
objc_offset(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER, &x, &y);
|
||||
objc_offset(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER, &x, &y);
|
||||
// TODO: add menu popup
|
||||
/*
|
||||
choice = MenuPopUp (font_driver_items, x, y,
|
||||
num_font_drivers,
|
||||
-1, -1, P_LIST + P_WNDW + P_CHCK );
|
||||
-1, -1, P_LIST + P_WNDW + P_CHCK);
|
||||
if( choice > 0 &&
|
||||
choice <= num_font_drivers ){
|
||||
set_text(SETTINGS_BT_SEL_FONT_RENDERER,
|
||||
(char*)font_driver_items[choice-1],
|
||||
LABEL_FONT_RENDERER_MAX_LEN);
|
||||
OBJ_REDRAW(SETTINGS_BT_SEL_FONT_RENDERER);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
tmp = get_text(dlgtree, SETTINGS_BT_SEL_FONT_RENDERER);
|
||||
if( strcmp(tmp, "freetype") == 0 ){
|
||||
|
@ -372,13 +350,16 @@ static void form_event(int index, int external)
|
|||
break;
|
||||
|
||||
case SETTINGS_BT_SEL_LOCALE:
|
||||
objc_offset(dlgtree, SETTINGS_BT_SEL_LOCALE, &x, &y);
|
||||
objc_offset(dlgtree, SETTINGS_BT_SEL_LOCALE, &x, &y);
|
||||
// TODO: open locales popup
|
||||
/*
|
||||
choice = MenuPopUp ( locales, x, y,
|
||||
num_locales,
|
||||
-1, -1, P_LIST + P_WNDW + P_CHCK );
|
||||
if( choice > 0 && choice <= num_locales ){
|
||||
set_text(SETTINGS_BT_SEL_LOCALE, (char*)locales[choice-1], 5);
|
||||
}
|
||||
*/
|
||||
OBJ_REDRAW(SETTINGS_BT_SEL_LOCALE);
|
||||
break;
|
||||
|
||||
|
|
|
@ -176,33 +176,32 @@ static void __CDECL on_mbutton_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
|
|||
{
|
||||
struct guiwin_scroll_info_s *slid;
|
||||
GRECT work;
|
||||
short mx, my;
|
||||
|
||||
if(tv == NULL)
|
||||
return;
|
||||
if( evnt.mbut & 2 ) {
|
||||
/* do not handle right click */
|
||||
return;
|
||||
}
|
||||
|
||||
guiwin_get_grect(tv->window, GUIWIN_AREA_CONTENT, &work);
|
||||
slid = guiwin_get_scroll_info(tv->window);
|
||||
mx = ev_out->emo_mouse.p_x;
|
||||
my = ev_out->emo_mouse.p_y;
|
||||
|
||||
/* mouse click relative origin: */
|
||||
|
||||
short origin_rel_x = (ev_out->emo_mouse.p_x-work.g_x) +
|
||||
short origin_rel_x = (mx-work.g_x) +
|
||||
(slid->x_pos*slid->x_unit_px);
|
||||
short origin_rel_y = (ev_out->emo_mouse.p_y-work.g_y) +
|
||||
short origin_rel_y = (my-work.g_y) +
|
||||
(slid->y_pos*slid->y_unit_px);
|
||||
|
||||
if( origin_rel_x >= 0 && origin_rel_y >= 0
|
||||
&& evnt.mx < work.g_x + work.g_w
|
||||
&& evnt.my < work.g_y + work.g_h )
|
||||
&& mx < work.g_x + work.g_w
|
||||
&& my < work.g_y + work.g_h )
|
||||
{
|
||||
int bms;
|
||||
bool ignore=false;
|
||||
short cur_rel_x, cur_rel_y, dummy, mbut;
|
||||
|
||||
if( evnt.nb_click == 2 ){
|
||||
if (ev_out->emo_mclicks == 2) {
|
||||
tree_mouse_action(tv->tree,
|
||||
BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_DOUBLE_CLICK,
|
||||
origin_rel_x, origin_rel_y );
|
||||
|
@ -212,7 +211,7 @@ static void __CDECL on_mbutton_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
|
|||
graf_mkstate(&cur_rel_x, &cur_rel_x, &mbut, &dummy);
|
||||
if( (mbut&1) == 0 ){
|
||||
bms = BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1;
|
||||
if( evnt.nb_click == 2 ) {
|
||||
if(ev_out->emo_mclicks == 2 ) {
|
||||
bms = BROWSER_MOUSE_DOUBLE_CLICK;
|
||||
}
|
||||
tree_mouse_action(tv->tree, bms, origin_rel_x, origin_rel_y );
|
||||
|
|
Loading…
Reference in New Issue