summaryrefslogtreecommitdiff
path: root/frontends/amiga/corewindow.c
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2017-01-01 14:53:37 +0000
committerChris Young <chris@unsatisfactorysoftware.co.uk>2017-01-01 14:53:37 +0000
commit31c08f39be64f739cac727ab5a13fc513d1a61aa (patch)
treef5bc0de331130b21ed5d5028b0cdab8a2f6484f7 /frontends/amiga/corewindow.c
parentc40e8197c270b1600fa7b32056a2019cd83e6f3f (diff)
downloadnetsurf-31c08f39be64f739cac727ab5a13fc513d1a61aa.tar.gz
netsurf-31c08f39be64f739cac727ab5a13fc513d1a61aa.tar.bz2
Basic event loop, only handles keypresses and window closure so far
Diffstat (limited to 'frontends/amiga/corewindow.c')
-rw-r--r--frontends/amiga/corewindow.c49
1 files changed, 47 insertions, 2 deletions
diff --git a/frontends/amiga/corewindow.c b/frontends/amiga/corewindow.c
index 5424b7b24..a42f08d17 100644
--- a/frontends/amiga/corewindow.c
+++ b/frontends/amiga/corewindow.c
@@ -51,6 +51,7 @@
#include <classes/window.h>
#include <gadgets/scroller.h>
#include <intuition/icclass.h>
+#include <reaction/reaction_macros.h>
#include "amiga/corewindow.h"
#include "amiga/misc.h"
@@ -98,12 +99,56 @@ HOOKF(void, ami_cw_idcmp_hook, Object *, object, struct IntuiMessage *)
/**
* Main event loop for our core window
+ *
+ * \return TRUE if window destroyed
*/
static BOOL
ami_cw_event(void *w)
{
struct ami_corewindow *ami_cw = (struct ami_corewindow *)w;
-//event loop goes here
+
+ ULONG result;
+ ULONG storage;
+ uint16 code;
+ struct InputEvent *ie;
+ int nskey;
+
+ while((result = RA_HandleInput(ami_cw->objects[GID_CW_WIN], &code)) != WMHI_LASTMSG) {
+ switch(result & WMHI_CLASSMASK) {
+ case WMHI_MOUSEMOVE:
+ break;
+
+ case WMHI_MOUSEBUTTONS:
+ break;
+
+ case WMHI_RAWKEY:
+ storage = result & WMHI_GADGETMASK;
+
+ GetAttr(WINDOW_InputEvent, ami_cw->objects[GID_CW_WIN], (ULONG *)&ie);
+ nskey = ami_key_to_nskey(storage, ie);
+ ami_cw->key(ami_cw, nskey);
+ if(nskey == NS_KEY_COPY_SELECTION) {
+ /* if we've copied a selection we need to clear it - style guide rules */
+ ami_cw->key(ami_cw, NS_KEY_CLEAR_SELECTION);
+ }
+ break;
+
+ case WMHI_NEWSIZE:
+ /* redraw */
+ break;
+
+ case WMHI_CLOSEWINDOW:
+ ami_cw_close(ami_cw);
+ return TRUE;
+ break;
+
+ default:
+ /* pass the event to the window owner */
+ ami_cw->event(ami_cw, result);
+ break;
+ }
+ };
+
return FALSE;
}
@@ -178,7 +223,7 @@ ami_cw_scroll_visible(struct core_window *cw, const struct rect *r)
int scrollsetx;
int scrollsety;
- int win_w, win_h;
+ int win_w = 0, win_h = 0;
int win_x0, win_x1;
int win_y0, win_y1;