Author: chris_y
Date: Sat Jan 24 18:36:30 2009
New Revision: 6261

URL: http://source.netsurf-browser.org?rev=6261&view=rev
Log:
Handle key-presses manually for greater control, and to remove some keyboard
copy'n'paste annoyances.  Caps lock still fails to work though.

Modified:
    trunk/netsurf/amiga/gui.c

Modified: trunk/netsurf/amiga/gui.c
URL: 
http://source.netsurf-browser.org/trunk/netsurf/amiga/gui.c?rev=6261&r1=6260&r2=6261&view=diff
==============================================================================
--- trunk/netsurf/amiga/gui.c (original)
+++ trunk/netsurf/amiga/gui.c Sat Jan 24 18:36:30 2009
@@ -720,6 +720,9 @@
                                        
GetAttr(SCROLLER_Top,gwin->objects[OID_VSCROLL],(ULONG *)&ys);
                                        y = gwin->win->MouseY - bbox->Top + ys;
 
+                                       x /= gwin->bw->scale;
+                                       y /= gwin->bw->scale;
+
                                        width=bbox->Width;
                                        height=bbox->Height;
 
@@ -766,6 +769,9 @@
                                        x = gwin->win->MouseX - bbox->Left +xs;
                                        
GetAttr(SCROLLER_Top,gwin->objects[OID_VSCROLL],(ULONG *)&ys);
                                        y = gwin->win->MouseY - bbox->Top + ys;
+
+                                       x /= gwin->bw->scale;
+                                       y /= gwin->bw->scale;
 
                                        width=bbox->Width;
                                        height=bbox->Height;
@@ -913,14 +919,6 @@
                                        }
                                break;
 
-                               case WMHI_VANILLAKEY:
-                                       storage = result & WMHI_GADGETMASK;
-
-                                       //printf("%lx\n",storage);
-
-                                       
browser_window_key_press(gwin->bw,storage);
-                               break;
-
                                case WMHI_RAWKEY:
                                        storage = result & WMHI_GADGETMASK;
 
@@ -944,7 +942,38 @@
                                                        
browser_window_key_press(gwin->bw,27);
                                                break;
                                                default:
-                                                       /*MapRawKey etc */
+                                               {
+                                                       UBYTE buffer[20];
+                                                       int chars;
+
+                                                       if(chars = 
MapRawKey(ie,buffer,20,NULL))
+                                                       {
+                                                               
if(ie->ie_Qualifier & IEQUALIFIER_RCOMMAND)
+                                                               {
+/* We are duplicating the menu shortcuts here, as if RMBTRAP is active
+ * (ie. when context menus are enabled and the mouse is over the browser
+ * rendering area), Intuition also does not catch the menu shortcut
+ * key presses.  This should probably be expanded to contain all the
+ * menu shortcuts, but copy and paste are the most used so we only
+ * handle those for now. */
+                                                                       
switch(buffer[0])
+                                                                       {
+                                                                               
case 'c':
+                                                                               
        gui_copy_to_clipboard(gwin->bw->sel);
+                                                                               
        browser_window_key_press(gwin->bw, 26);
+                                                                               
break;
+
+                                                                               
case 'v':
+                                                                               
        gui_paste_from_clipboard(gwin->bw->window,0,0);
+                                                                               
break;
+                                                                       }
+                                                               }
+                                                               else
+                                                               {
+                                                                       
browser_window_key_press(gwin->bw,buffer[0]);
+                                                               }
+                                                       }
+                                               }
                                                break;
                                        }
                                break;
@@ -1530,7 +1559,8 @@
                        WA_CustomScreen,scrn,
                        WA_ReportMouse,TRUE,
                WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS |
-                                IDCMP_NEWSIZE | IDCMP_VANILLAKEY | 
IDCMP_RAWKEY | IDCMP_GADGETUP | IDCMP_IDCMPUPDATE | IDCMP_INTUITICKS | 
IDCMP_EXTENDEDMOUSE,
+                                IDCMP_NEWSIZE | IDCMP_RAWKEY | IDCMP_GADGETUP |
+                               IDCMP_IDCMPUPDATE | IDCMP_INTUITICKS | 
IDCMP_EXTENDEDMOUSE,
 //                     WINDOW_IconifyGadget, TRUE,
 //                     WINDOW_NewMenu,menu,
                        WINDOW_HorizProp,1,
@@ -1607,7 +1637,7 @@
                                        WA_ReportMouse,TRUE,
                                WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE |
                                                                
IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE |
-                                                               
IDCMP_VANILLAKEY | IDCMP_RAWKEY |
+                                                               IDCMP_RAWKEY |
                                                                IDCMP_GADGETUP 
| IDCMP_IDCMPUPDATE |
                                                                
IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW |
                                                                
IDCMP_EXTENDEDMOUSE,
@@ -1770,7 +1800,7 @@
                                        WA_ReportMouse,TRUE,
                                WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE |
                                                        IDCMP_MOUSEBUTTONS | 
IDCMP_NEWSIZE |
-                                                       IDCMP_VANILLAKEY | 
IDCMP_RAWKEY |
+                                                       IDCMP_RAWKEY |
                                                        IDCMP_GADGETUP | 
IDCMP_IDCMPUPDATE |
                                                        IDCMP_INTUITICKS | 
IDCMP_EXTENDEDMOUSE,
                                        WINDOW_HorizProp,1,
@@ -2143,6 +2173,7 @@
        if(!g) return;
        if(sx<0) sx=0;
        if(sy<0) sy=0;
+       if(!g->shared->bw || !g->shared->bw->current_content) return;
        if(sx > g->shared->bw->current_content->width) sx = 
g->shared->bw->current_content->width;
        if(sy > g->shared->bw->current_content->height) sy = 
g->shared->bw->current_content->height;
 
@@ -2189,13 +2220,11 @@
        *width = bbox->Width;
        *height = bbox->Height;
 
-/*
        if(scaled)
        {
                *width /= g->shared->bw->scale;
                *height /= g->shared->bw->scale;
        }
-*/
 }
 
 void gui_window_update_extent(struct gui_window *g)
@@ -2528,7 +2557,7 @@
        GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)&xs);
        GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)&ys);
 
-       
BltBitMapRastPort(glob.bm,g->c_x,g->c_y,g->shared->win->RPort,bbox->Left+g->c_x-xs,bbox->Top+g->c_y-ys,2+1,g->c_h+1,0x0C0);
+       
BltBitMapRastPort(glob.bm,g->c_x+bbox->Left-xs,g->c_y+bbox->Top-ys,g->shared->win->RPort,bbox->Left+g->c_x-xs,bbox->Top+g->c_y-ys,2+1,g->c_h+1,0x0C0);
 
        g->c_h = 0;
 }


_______________________________________________
netsurf-commits mailing list
[email protected]
http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org

Reply via email to