From aa86da5f027301540bd4a41cdfa512fa1d2b69e8 Mon Sep 17 00:00:00 2001 From: Chris Young Date: Fri, 22 May 2020 23:58:16 +0100 Subject: Amiga: position page info window under page info button --- frontends/amiga/gui.c | 17 +++++++++++++++-- frontends/amiga/pageinfo.c | 15 ++++++++++----- frontends/amiga/pageinfo.h | 2 +- 3 files changed, 26 insertions(+), 8 deletions(-) (limited to 'frontends') diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c index 1dde68727..698c2c775 100644 --- a/frontends/amiga/gui.c +++ b/frontends/amiga/gui.c @@ -3000,8 +3000,21 @@ static BOOL ami_gui_event(void *w) break; case GID_PAGEINFO: - if(ami_pageinfo_open(gwin->gw->bw) != NSERROR_OK) { - NSLOG(netsurf, INFO, "Unable to open page info window"); + { + ULONG w_top, w_left; + ULONG g_top, g_left, g_height; + + GetAttr(WA_Top, gwin->objects[OID_MAIN], &w_top); + GetAttr(WA_Left, gwin->objects[OID_MAIN], &w_left); + GetAttr(GA_Top, gwin->objects[GID_PAGEINFO], &g_top); + GetAttr(GA_Left, gwin->objects[GID_PAGEINFO], &g_left); + GetAttr(GA_Height, gwin->objects[GID_PAGEINFO], &g_height); + + if(ami_pageinfo_open(gwin->gw->bw, + w_left + g_left, + w_top + g_top + g_height) != NSERROR_OK) { + NSLOG(netsurf, INFO, "Unable to open page info window"); + } } break; diff --git a/frontends/amiga/pageinfo.c b/frontends/amiga/pageinfo.c index 898cb0653..8b65989e3 100644 --- a/frontends/amiga/pageinfo.c +++ b/frontends/amiga/pageinfo.c @@ -163,7 +163,7 @@ ami_pageinfo_draw(struct ami_corewindow *ami_cw, int x, int y, struct rect *r, s } static nserror -ami_pageinfo_create_window(struct ami_pageinfo_window *pageinfo_win) +ami_pageinfo_create_window(struct ami_pageinfo_window *pageinfo_win, ULONG left, ULONG top) { struct ami_corewindow *ami_cw = (struct ami_corewindow *)&pageinfo_win->core; ULONG refresh_mode = WA_SmartRefresh; @@ -182,7 +182,8 @@ ami_pageinfo_create_window(struct ami_pageinfo_window *pageinfo_win) WA_CloseGadget, TRUE, WA_SizeGadget, TRUE, WA_SizeBBottom, TRUE, - WA_Height, scrn->Height / 2, + WA_Left, left, + WA_Top, top, WA_PubScreen, scrn, WA_ReportMouse, TRUE, refresh_mode, TRUE, @@ -197,7 +198,6 @@ ami_pageinfo_create_window(struct ami_pageinfo_window *pageinfo_win) WINDOW_VertProp, 1, WINDOW_UserData, pageinfo_win, WINDOW_IconifyGadget, FALSE, - WINDOW_Position, WPOS_CENTERSCREEN, WINDOW_ParentGroup, ami_cw->objects[GID_CW_MAIN] = LayoutVObj, LAYOUT_AddChild, ami_cw->objects[GID_CW_DRAW] = SpaceObj, GA_ID, GID_CW_DRAW, @@ -216,10 +216,11 @@ ami_pageinfo_create_window(struct ami_pageinfo_window *pageinfo_win) } /* exported interface documented in amiga/pageinfo.h */ -nserror ami_pageinfo_open(struct browser_window *bw) +nserror ami_pageinfo_open(struct browser_window *bw, ULONG left, ULONG top) { struct ami_pageinfo_window *ncwin; nserror res; + int width, height; ncwin = calloc(1, sizeof(struct ami_pageinfo_window)); if (ncwin == NULL) { @@ -228,7 +229,7 @@ nserror ami_pageinfo_open(struct browser_window *bw) ncwin->core.wintitle = ami_utf8_easy((char *)messages_get("PageInfo")); - res = ami_pageinfo_create_window(ncwin); + res = ami_pageinfo_create_window(ncwin, left, top); if (res != NSERROR_OK) { NSLOG(netsurf, INFO, "Page info init failed"); ami_utf8_free(ncwin->core.wintitle); @@ -263,6 +264,10 @@ nserror ami_pageinfo_open(struct browser_window *bw) return res; } + if(page_info_get_size(ncwin->pi, &width, &height) == NSERROR_OK) { + SetAttrs(ncwin->core.objects[GID_CW_WIN], WA_InnerWidth, width, WA_InnerHeight, height, TAG_DONE); + } + return NSERROR_OK; } diff --git a/frontends/amiga/pageinfo.h b/frontends/amiga/pageinfo.h index 7737b258e..e48925e26 100644 --- a/frontends/amiga/pageinfo.h +++ b/frontends/amiga/pageinfo.h @@ -25,7 +25,7 @@ * \param bw the browser window * \return NSERROR_OK or error code if window creation failed. */ -nserror ami_pageinfo_open(struct browser_window *bw); +nserror ami_pageinfo_open(struct browser_window *bw, ULONG left, ULONG top); #endif -- cgit v1.2.3