summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2008-09-01 18:03:40 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2008-09-01 18:03:40 +0000
commitdb1d925ff8a6b5db4631acf83aab69886c7309f2 (patch)
tree946cd5a24d741a7745491a356aab4cd834af7f9b
parent30f0bbd2569c3ae19799f3a31ed90a0062fc8f2c (diff)
downloadnetsurf-db1d925ff8a6b5db4631acf83aab69886c7309f2.tar.gz
netsurf-db1d925ff8a6b5db4631acf83aab69886c7309f2.tar.bz2
Add shift and ctrl click support, set file comments to url.
svn path=/trunk/netsurf/; revision=5228
-rwxr-xr-xamiga/gui.c43
-rwxr-xr-xamiga/gui.h1
2 files changed, 35 insertions, 9 deletions
diff --git a/amiga/gui.c b/amiga/gui.c
index 5c2c935d3..f00e4e57b 100755
--- a/amiga/gui.c
+++ b/amiga/gui.c
@@ -401,17 +401,17 @@ void ami_get_msg(void)
{
if(gwin->mouse_state & BROWSER_MOUSE_PRESS_1)
{
- browser_window_mouse_track(gwin->bw,BROWSER_MOUSE_DRAG_1,x,y);
+ browser_window_mouse_track(gwin->bw,BROWSER_MOUSE_DRAG_1 | gwin->key_state,x,y);
gwin->mouse_state = BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_ON;
}
else if(gwin->mouse_state & BROWSER_MOUSE_PRESS_2)
{
- browser_window_mouse_track(gwin->bw,BROWSER_MOUSE_DRAG_2,x,y);
+ browser_window_mouse_track(gwin->bw,BROWSER_MOUSE_DRAG_2 | gwin->key_state,x,y);
gwin->mouse_state = BROWSER_MOUSE_HOLDING_2 | BROWSER_MOUSE_DRAG_ON;
}
else
{
- browser_window_mouse_track(gwin->bw,gwin->mouse_state,x,y);
+ browser_window_mouse_track(gwin->bw,gwin->mouse_state | gwin->key_state,x,y);
}
}
break;
@@ -431,15 +431,14 @@ void ami_get_msg(void)
//code = code>>16;
switch(code)
{
-/* various things aren't implemented here yet, like shift-clicks, ctrl-clicks etc */
case SELECTDOWN:
- browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_PRESS_1,x,y);
+ browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_PRESS_1 | gwin->key_state,x,y);
gwin->mouse_state=BROWSER_MOUSE_PRESS_1;
break;
case SELECTUP:
if(gwin->mouse_state & BROWSER_MOUSE_PRESS_1)
{
- browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_CLICK_1,x,y);
+ browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_CLICK_1 | gwin->key_state,x,y);
}
else
{
@@ -448,13 +447,13 @@ void ami_get_msg(void)
gwin->mouse_state=0;
break;
case MIDDLEDOWN:
- browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_PRESS_2,x,y);
+ browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_PRESS_2 | gwin->key_state,x,y);
gwin->mouse_state=BROWSER_MOUSE_PRESS_2;
break;
case MIDDLEUP:
if(gwin->mouse_state & BROWSER_MOUSE_PRESS_2)
{
- browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_CLICK_2,x,y);
+ browser_window_mouse_click(gwin->bw,BROWSER_MOUSE_CLICK_2 | gwin->key_state,x,y);
}
else
{
@@ -560,11 +559,14 @@ void ami_get_msg(void)
{
strlcpy(&fname,filereq->fr_Drawer,1024);
AddPart(&fname,filereq->fr_File,1024);
+ gui_window_set_pointer(gwin,GUI_POINTER_WAIT);
if(fh = FOpen(&fname,MODE_NEWFILE,0))
{
FWrite(fh,gwin->bw->current_content->source_data,1,gwin->bw->current_content->source_size);
FClose(fh);
+ SetComment(&fname,gwin->bw->current_content->url);
}
+ gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT);
}
break;
@@ -578,7 +580,10 @@ void ami_get_msg(void)
{
strlcpy(&fname,filereq->fr_Drawer,1024);
AddPart(&fname,filereq->fr_File,1024);
+ gui_window_set_pointer(gwin,GUI_POINTER_WAIT);
save_as_text(gwin->bw->current_content,&fname);
+ SetComment(&fname,gwin->bw->current_content->url);
+ gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT);
}
break;
@@ -593,9 +598,11 @@ void ami_get_msg(void)
{
strlcpy(&fname,filereq->fr_Drawer,1024);
AddPart(&fname,filereq->fr_File,1024);
- save_as_text(gwin->bw->current_content,&fname);
+ gui_window_set_pointer(gwin,GUI_POINTER_WAIT);
pdf_set_scale(DEFAULT_EXPORT_SCALE);
save_as_pdf(gwin->bw->current_content,&fname);
+ SetComment(&fname,gwin->bw->current_content->url);
+ gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT);
}
#endif
break;
@@ -693,6 +700,18 @@ void ami_get_msg(void)
case RAWKEY_ESC:
browser_window_key_press(gwin->bw,27);
break;
+ case RAWKEY_LSHIFT:
+ gwin->key_state = BROWSER_MOUSE_MOD_1;
+ break;
+ case 0xe0: // lshift up
+ gwin->key_state = 0;
+ break;
+ case RAWKEY_LCTRL:
+ gwin->key_state = BROWSER_MOUSE_MOD_2;
+ break;
+ case 0xe3: // lctrl up
+ gwin->key_state = 0;
+ break;
}
break;
@@ -1386,6 +1405,8 @@ void gui_window_set_status(struct gui_window *g, const char *text)
Object *ami_custom_pointer(gui_pointer_shape shape)
{
+ if(!mouseptrbm[shape]) printf("%ld is null\n",shape);
+
return NewObject(NULL,"pointerclass",POINTERA_BitMap,mouseptrbm[shape],POINTERA_WordWidth,2,POINTERA_XOffset,-mousexpt[shape],POINTERA_YOffset,-mouseypt[shape],POINTERA_XResolution,POINTERXRESN_SCREENRES,POINTERA_YResolution,POINTERYRESN_SCREENRESASPECT,TAG_DONE);
}
@@ -1524,6 +1545,8 @@ struct gui_download_window *gui_download_window_create(const char *url,
return NULL;
}
+ SetComment(&fname,url);
+
dw->objects[OID_MAIN] = WindowObject,
WA_ScreenTitle,nsscreentitle,
WA_Title, url,
@@ -1743,6 +1766,8 @@ void gui_create_form_select_menu(struct browser_window *bw,
i++;
}
+ gui_window_set_pointer(gwin,GUI_POINTER_DEFAULT); // Clear the menu-style pointer
+
IDoMethod(gwin->objects[OID_MENU],PM_OPEN,gwin->win);
}
diff --git a/amiga/gui.h b/amiga/gui.h
index 1081b1e3b..5e6bedfa6 100755
--- a/amiga/gui.h
+++ b/amiga/gui.h
@@ -83,6 +83,7 @@ struct gui_window {
struct form_control *control;
union content_msg_data *redraw_data;
browser_mouse_state mouse_state;
+ browser_mouse_state key_state;
int c_x;
int c_y;
int c_h;