Fix scrolling using arrow keys and page up/down.

This commit is contained in:
Adrien Destugues
2012-11-08 15:42:03 +00:00
parent e8e86ace47
commit f12b8701a2

View File

@@ -633,7 +633,7 @@ index ae78391..bd13230 100644
diff --git a/beos/window.cpp b/beos/window.cpp
index 253b5d1..b9e6491 100644
index 253b5d1..729d7b1 100644
--- a/beos/window.cpp
+++ b/beos/window.cpp
@@ -131,7 +131,7 @@ static GdkCursor *nsbeos_create_menu_cursor(void);
@@ -675,7 +675,56 @@ index 253b5d1..b9e6491 100644
break;
}
default:
@@ -1674,7 +1681,7 @@ bool gui_add_to_clipboard(const char *text, size_t length, bool space,
@@ -926,11 +933,44 @@ void nsbeos_window_keypress_event(BView *view, gui_window *g, BMessage *event)
nskey = utf8_to_ucs4(bytes, numbytes);
}
- bool done = browser_window_key_press(g->bw, nskey);
- LOG(("nskey %d %d", nskey, done));
- //if (browser_window_key_press(g->bw, nskey))
+ if(browser_window_key_press(g->bw, nskey))
return;
-
+
+ // Remaining events are for scrolling the page around
+ float hdelta = 0.0f, vdelta = 0.0f;
+ g->view->LockLooper();
+ BRect size = g->view->Bounds();
+ switch (byte) {
+ case B_HOME:
+ g->view->ScrollTo(0.0f, 0.0f);
+ break;
+ case B_END:
+ {
+ // TODO
+ break;
+ }
+ case B_PAGE_UP:
+ vdelta = -size.Height();
+ break;
+ case B_PAGE_DOWN:
+ vdelta = size.Height();
+ break;
+ case B_LEFT_ARROW:
+ hdelta = -10;
+ break;
+ case B_RIGHT_ARROW:
+ hdelta = 10;
+ break;
+ case B_UP_ARROW:
+ vdelta = -10;
+ break;
+ case B_DOWN_ARROW:
+ vdelta = 10;
+ break;
+ }
+
+ g->view->ScrollBy(hdelta, vdelta);
+ g->view->UnlockLooper();
}
#warning WRITEME
@@ -1674,7 +1714,7 @@ bool gui_add_to_clipboard(const char *text, size_t length, bool space,
BFont font;
text_run *run = new text_run;