summaryrefslogtreecommitdiff
path: root/riscos/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'riscos/window.c')
-rw-r--r--riscos/window.c17
1 files changed, 15 insertions, 2 deletions
diff --git a/riscos/window.c b/riscos/window.c
index 45c862eb1..22c12c637 100644
--- a/riscos/window.c
+++ b/riscos/window.c
@@ -1618,6 +1618,16 @@ void ro_gui_window_open(wimp_open *open)
/* first resize stops any flickering by making the URL window on top */
ro_gui_url_complete_resize(g->toolbar, PTR_WIMP_OPEN(&state));
+ /* Windows containing framesets can only be scrolled via the core, which
+ * is implementing frame scrollbars itself. The x and y offsets are
+ * therefore fixed.
+ */
+
+ if (g->bw->children != NULL) {
+ state.xscroll = 0;
+ state.yscroll = toolbar_height;
+ }
+
error = xwimp_open_window_nested_with_flags(&state, parent, linkage);
if (error) {
LOG(("xwimp_open_window: 0x%x: %s",
@@ -3105,9 +3115,12 @@ void ro_gui_window_scroll_action(struct gui_window *g,
handled = browser_window_scroll_at_point(g->bw, pos.x, pos.y,
step_x / 2, -step_y / 2);
- /* If the core didn't do the scrolling, handle it via the Wimp. */
+ /* If the core didn't do the scrolling, handle it via the Wimp.
+ * Windows which contain frames can only be scrolled by the core,
+ * because it implements frame scroll bars.
+ */
- if (!handled) {
+ if (!handled && g->bw->children == NULL) {
state.xscroll += step_x;
state.yscroll += step_y;