Gitweb links:
...log
http://git.netsurf-browser.org/netsurf.git/shortlog/64bb74bdafa216d4163d6b717271a9f45ac0d287
...commit
http://git.netsurf-browser.org/netsurf.git/commit/64bb74bdafa216d4163d6b717271a9f45ac0d287
...tree
http://git.netsurf-browser.org/netsurf.git/tree/64bb74bdafa216d4163d6b717271a9f45ac0d287
The branch, chris/amiga-corewindow has been updated
via 64bb74bdafa216d4163d6b717271a9f45ac0d287 (commit)
via 48e95ad2b3ede2b6170b635074bf0ee1010dfb39 (commit)
from 0fafa9576e8963928c13c81524e64b624b794c98 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=64bb74bdafa216d4163d6b717271a9f45ac0d287
commit 64bb74bdafa216d4163d6b717271a9f45ac0d287
Author: Chris Young <[email protected]>
Commit: Chris Young <[email protected]>
fix mouse click processing
diff --git a/frontends/amiga/corewindow.c b/frontends/amiga/corewindow.c
index df2bc1d..052ddd6 100644
--- a/frontends/amiga/corewindow.c
+++ b/frontends/amiga/corewindow.c
@@ -140,60 +140,6 @@ ami_cw_mouse_pos(struct ami_corewindow *ami_cw, int
*restrict x, int *restrict y
return true;
}
-static void
-ami_cw_toggle_scrollbar(struct ami_corewindow *ami_cw, bool vert, bool visible)
-{
- Object *scroller;
- Object *layout;
- ULONG tag;
-
- if(vert == true) {
- if(visible == ami_cw->scroll_y_visible) {
- return;
- } else {
- scroller = ami_cw->objects[GID_CW_VSCROLL];
- layout = ami_cw->objects[GID_CW_VSCROLLLAYOUT];
- tag = WINDOW_VertProp;
- ami_cw->scroll_y_visible = visible;
- }
- } else {
- if(visible == ami_cw->scroll_x_visible) {
- return;
- } else {
- scroller = ami_cw->objects[GID_CW_HSCROLL];
- layout = ami_cw->objects[GID_CW_HSCROLLLAYOUT];
- tag = WINDOW_HorizProp;
- ami_cw->scroll_x_visible = visible;
- }
- }
-
- if(visible == true) {
- if(ami_cw->in_border_scroll == true) {
- SetAttrs(ami_cw->objects[GID_CW_WIN],
- tag, 1,
- TAG_DONE);
- } else {
-#ifdef __amigaos4__
- IDoMethod(layout, LM_ADDCHILD, ami_cw->win, scroller,
NULL);
-#else
- SetAttrs(layout, LAYOUT_AddChild, scroller, TAG_DONE);
-#endif
- }
- } else {
- if(ami_cw->in_border_scroll == true) {
- SetAttrs(ami_cw->objects[GID_CW_WIN],
- tag, -1,
- TAG_DONE);
- } else {
-#ifdef __amigaos4__
- IDoMethod(layout, LM_REMOVECHILD, ami_cw->win,
scroller);
-#else
- SetAttrs(layout, LAYOUT_RemoveChild, scroller,
TAG_DONE);
-#endif
- }
- }
-}
-
/* handle keypress */
static void
ami_cw_key(struct ami_corewindow *ami_cw, int nskey)
@@ -392,6 +338,72 @@ ami_cw_redraw(struct ami_corewindow *ami_cw, const struct
rect *restrict r)
ami_schedule(1, ami_cw_redraw_cb, ami_cw);
}
+static void
+ami_cw_toggle_scrollbar(struct ami_corewindow *ami_cw, bool vert, bool visible)
+{
+ Object *scroller;
+ Object *layout;
+ ULONG tag;
+
+ if(vert == true) {
+ if(visible == ami_cw->scroll_y_visible) {
+ return;
+ } else {
+ scroller = ami_cw->objects[GID_CW_VSCROLL];
+ layout = ami_cw->objects[GID_CW_VSCROLLLAYOUT];
+ tag = WINDOW_VertProp;
+ ami_cw->scroll_y_visible = visible;
+ }
+ } else {
+ if(visible == ami_cw->scroll_x_visible) {
+ return;
+ } else {
+ scroller = ami_cw->objects[GID_CW_HSCROLL];
+ layout = ami_cw->objects[GID_CW_HSCROLLLAYOUT];
+ tag = WINDOW_HorizProp;
+ ami_cw->scroll_x_visible = visible;
+ }
+ }
+
+ if(visible == true) {
+ if(ami_cw->in_border_scroll == true) {
+ SetAttrs(ami_cw->objects[GID_CW_WIN],
+ tag, 1,
+ TAG_DONE);
+ } else {
+#ifdef __amigaos4__
+ IDoMethod(layout, LM_ADDCHILD, ami_cw->win, scroller,
NULL);
+#else
+ SetAttrs(layout, LAYOUT_AddChild, scroller, TAG_DONE);
+#endif
+ }
+ } else {
+ if(ami_cw->in_border_scroll == true) {
+ SetAttrs(ami_cw->objects[GID_CW_WIN],
+ tag, -1,
+ TAG_DONE);
+ } else {
+#ifdef __amigaos4__
+ IDoMethod(layout, LM_REMOVECHILD, ami_cw->win,
scroller);
+#else
+ SetAttrs(layout, LAYOUT_RemoveChild, scroller,
TAG_DONE);
+#endif
+ }
+ }
+
+#if 0
+ /* in-window scrollbars aren't getting hidden until the window is
resized
+ * this code should fix it, but it isn't working */
+ if(ami_cw->in_border_scroll == false) {
+ FlushLayoutDomainCache((struct Gadget
*)ami_cw->objects[GID_CW_WIN]);
+ RethinkLayout((struct Gadget *)ami_cw->objects[GID_CW_WIN],
+ ami_cw->win, NULL, TRUE);
+
+ /* probably need to redraw here */
+ ami_cw_redraw(ami_cw, NULL);
+ }
+#endif
+}
static void
ami_cw_close(void *w)
@@ -466,48 +478,49 @@ ami_cw_event(void *w)
key_state =
ami_gui_get_quals(ami_cw->objects[GID_CW_WIN]);
- case SELECTDOWN:
- ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_1;
- break;
+ switch(code) {
+ case SELECTDOWN:
+ ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_1;
+ break;
- case MIDDLEDOWN:
- ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_2;
- break;
+ case MIDDLEDOWN:
+ ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_2;
+ break;
- case SELECTUP:
- if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_1) {
- CurrentTime((ULONG
*)&curtime.tv_sec, (ULONG *)&curtime.tv_usec);
+ case SELECTUP:
+ if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_1) {
+ CurrentTime((ULONG
*)&curtime.tv_sec, (ULONG *)&curtime.tv_usec);
- ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_1;
+ ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_1;
- if(ami_cw->lastclick.tv_sec) {
-
if(DoubleClick(ami_cw->lastclick.tv_sec,
-
ami_cw->lastclick.tv_usec,
-
curtime.tv_sec, curtime.tv_usec))
-
ami_cw->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK;
- }
+
if(ami_cw->lastclick.tv_sec) {
+
if(DoubleClick(ami_cw->lastclick.tv_sec,
+
ami_cw->lastclick.tv_usec,
+
curtime.tv_sec, curtime.tv_usec))
+
ami_cw->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK;
+ }
- if(ami_cw->mouse_state &
BROWSER_MOUSE_DOUBLE_CLICK) {
-
ami_cw->lastclick.tv_sec = 0;
-
ami_cw->lastclick.tv_usec = 0;
- } else {
-
ami_cw->lastclick.tv_sec = curtime.tv_sec;
-
ami_cw->lastclick.tv_usec = curtime.tv_usec;
+ if(ami_cw->mouse_state
& BROWSER_MOUSE_DOUBLE_CLICK) {
+
ami_cw->lastclick.tv_sec = 0;
+
ami_cw->lastclick.tv_usec = 0;
+ } else {
+
ami_cw->lastclick.tv_sec = curtime.tv_sec;
+
ami_cw->lastclick.tv_usec = curtime.tv_usec;
+ }
}
- }
-
- ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
- ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
- break;
- case MIDDLEUP:
- if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_2)
- ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_2;
+ ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
+ ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
+ break;
- ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
- ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
- break;
+ case MIDDLEUP:
+ if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_2)
+ ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_2;
+ ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
+ ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
+ break;
+ }
ami_cw->mouse(ami_cw, ami_cw->mouse_state |
key_state, x, y);
break;
@@ -626,17 +639,6 @@ ami_cw_update_size(struct core_window *cw, int width, int
height)
SCROLLER_Visible, win_w,
TAG_DONE);
}
-
-#if 0
- /* in-window scrollbars aren't getting hidden until the window is
resized
- * this code should fix it, but it isn't working */
- FlushLayoutDomainCache((struct Gadget *)ami_cw->objects[GID_CW_WIN]);
- RethinkLayout((struct Gadget *)ami_cw->objects[GID_CW_WIN],
- ami_cw->win, NULL, TRUE);
-
- /* probably need to redraw here */
- ami_cw_redraw(ami_cw, NULL);
-#endif
}
commitdiff
http://git.netsurf-browser.org/netsurf.git/commit/?id=48e95ad2b3ede2b6170b635074bf0ee1010dfb39
commit 48e95ad2b3ede2b6170b635074bf0ee1010dfb39
Author: Chris Young <[email protected]>
Commit: Chris Young <[email protected]>
show/hide scrollbars as required
move the sslcert scrollbars into the window as per the style guide
diff --git a/frontends/amiga/corewindow.c b/frontends/amiga/corewindow.c
index 024e768..df2bc1d 100644
--- a/frontends/amiga/corewindow.c
+++ b/frontends/amiga/corewindow.c
@@ -47,9 +47,11 @@
#include <proto/exec.h>
#include <proto/intuition.h>
+#include <proto/layout.h>
#include <proto/utility.h>
#include <classes/window.h>
+#include <gadgets/layout.h>
#include <gadgets/scroller.h>
#include <gadgets/space.h>
#include <intuition/icclass.h>
@@ -62,6 +64,25 @@
#include "amiga/schedule.h"
#include "amiga/utf8.h"
+static void
+ami_cw_scroller_top(struct ami_corewindow *ami_cw, ULONG *restrict x, ULONG
*restrict y)
+{
+ ULONG xs = 0;
+ ULONG ys = 0;
+
+ if(ami_cw->scroll_x_visible == true) {
+ GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG
*)&xs);
+ }
+
+ if(ami_cw->scroll_y_visible == true) {
+ GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG
*)&ys);
+ }
+
+ *x = xs;
+ *y = ys;
+}
+
+
/**
* Convert co-ordinates relative to space.gadget
* into document co-ordinates
@@ -73,10 +94,10 @@
static void
ami_cw_coord_amiga_to_ns(struct ami_corewindow *ami_cw, int *restrict x, int
*restrict y)
{
- ULONG xs, ys;
+ ULONG xs = 0;
+ ULONG ys = 0;
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG *)&xs);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG *)&ys);
+ ami_cw_scroller_top(ami_cw, &xs, &ys);
*x = *x + xs;
*y = *y + ys;
@@ -109,8 +130,7 @@ ami_cw_mouse_pos(struct ami_corewindow *ami_cw, int
*restrict x, int *restrict y
if((xm < 0) || (ym < 0) || (xm > bbox->Width) || (ym > bbox->Height))
return false;
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG *)&xs);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG *)&ys);
+ ami_cw_scroller_top(ami_cw, &xs, &ys);
xm += xs;
ym += ys;
@@ -120,6 +140,60 @@ ami_cw_mouse_pos(struct ami_corewindow *ami_cw, int
*restrict x, int *restrict y
return true;
}
+static void
+ami_cw_toggle_scrollbar(struct ami_corewindow *ami_cw, bool vert, bool visible)
+{
+ Object *scroller;
+ Object *layout;
+ ULONG tag;
+
+ if(vert == true) {
+ if(visible == ami_cw->scroll_y_visible) {
+ return;
+ } else {
+ scroller = ami_cw->objects[GID_CW_VSCROLL];
+ layout = ami_cw->objects[GID_CW_VSCROLLLAYOUT];
+ tag = WINDOW_VertProp;
+ ami_cw->scroll_y_visible = visible;
+ }
+ } else {
+ if(visible == ami_cw->scroll_x_visible) {
+ return;
+ } else {
+ scroller = ami_cw->objects[GID_CW_HSCROLL];
+ layout = ami_cw->objects[GID_CW_HSCROLLLAYOUT];
+ tag = WINDOW_HorizProp;
+ ami_cw->scroll_x_visible = visible;
+ }
+ }
+
+ if(visible == true) {
+ if(ami_cw->in_border_scroll == true) {
+ SetAttrs(ami_cw->objects[GID_CW_WIN],
+ tag, 1,
+ TAG_DONE);
+ } else {
+#ifdef __amigaos4__
+ IDoMethod(layout, LM_ADDCHILD, ami_cw->win, scroller,
NULL);
+#else
+ SetAttrs(layout, LAYOUT_AddChild, scroller, TAG_DONE);
+#endif
+ }
+ } else {
+ if(ami_cw->in_border_scroll == true) {
+ SetAttrs(ami_cw->objects[GID_CW_WIN],
+ tag, -1,
+ TAG_DONE);
+ } else {
+#ifdef __amigaos4__
+ IDoMethod(layout, LM_REMOVECHILD, ami_cw->win,
scroller);
+#else
+ SetAttrs(layout, LAYOUT_RemoveChild, scroller,
TAG_DONE);
+#endif
+ }
+ }
+}
+
/* handle keypress */
static void
ami_cw_key(struct ami_corewindow *ami_cw, int nskey)
@@ -176,8 +250,7 @@ ami_cw_redraw_rect(struct ami_corewindow *ami_cw, struct
rect *r)
return;
}
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG *)&pos_x);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG *)&pos_y);
+ ami_cw_scroller_top(ami_cw, &pos_x, &pos_y);
glob = &ami_cw->gg;
@@ -376,7 +449,7 @@ ami_cw_event(void *w)
int nskey;
int key_state = 0;
struct timeval curtime;
- int x, y;
+ int x = 0, y = 0;
while((result = RA_HandleInput(ami_cw->objects[GID_CW_WIN], &code)) !=
WMHI_LASTMSG) {
switch(result & WMHI_CLASSMASK) {
@@ -524,12 +597,22 @@ static void
ami_cw_update_size(struct core_window *cw, int width, int height)
{
struct ami_corewindow *ami_cw = (struct ami_corewindow *)cw;
-
- /* I'm assuming this is telling me the new page size, not wanting the
window physically resized */
int win_w, win_h;
+
ami_cw_get_window_dimensions((struct core_window *)ami_cw, &win_w,
&win_h);
+ if(width == -1) {
+ ami_cw_toggle_scrollbar(ami_cw, false, false);
+ return;
+ }
+
+ if(height == -1) {
+ ami_cw_toggle_scrollbar(ami_cw, true, false);
+ return;
+ }
+
if(ami_cw->objects[GID_CW_VSCROLL]) {
+ ami_cw_toggle_scrollbar(ami_cw, true, true);
RefreshSetGadgetAttrs((struct Gadget
*)ami_cw->objects[GID_CW_VSCROLL], ami_cw->win, NULL,
SCROLLER_Total, (ULONG)height,
SCROLLER_Visible, win_h,
@@ -537,11 +620,23 @@ ami_cw_update_size(struct core_window *cw, int width, int
height)
}
if(ami_cw->objects[GID_CW_HSCROLL]) {
+ ami_cw_toggle_scrollbar(ami_cw, false, true);
RefreshSetGadgetAttrs((struct Gadget
*)ami_cw->objects[GID_CW_HSCROLL], ami_cw->win, NULL,
SCROLLER_Total, (ULONG)width,
SCROLLER_Visible, win_w,
TAG_DONE);
}
+
+#if 0
+ /* in-window scrollbars aren't getting hidden until the window is
resized
+ * this code should fix it, but it isn't working */
+ FlushLayoutDomainCache((struct Gadget *)ami_cw->objects[GID_CW_WIN]);
+ RethinkLayout((struct Gadget *)ami_cw->objects[GID_CW_WIN],
+ ami_cw->win, NULL, TRUE);
+
+ /* probably need to redraw here */
+ ami_cw_redraw(ami_cw, NULL);
+#endif
}
@@ -553,13 +648,12 @@ ami_cw_scroll_visible(struct core_window *cw, const
struct rect *r)
int scrollsetx;
int scrollsety;
int win_w = 0, win_h = 0;
- int win_x0, win_x1;
- int win_y0, win_y1;
+ ULONG win_x0, win_y0;
+ int win_x1, win_y1;
ami_cw_get_window_dimensions((struct core_window *)ami_cw, &win_w,
&win_h);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG
*)&win_y0);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG
*)&win_x0);
+ ami_cw_scroller_top(ami_cw, &win_x0, &win_y0);
win_x1 = win_x0 + win_w;
win_y1 = win_y0 + win_h;
@@ -569,13 +663,17 @@ ami_cw_scroll_visible(struct core_window *cw, const
struct rect *r)
if(r->x1 > win_x1) scrollsetx = r->x1 - win_w;
if(r->x0 < win_x0) scrollsetx = r->x0;
- RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_VSCROLL],
ami_cw->win, NULL,
- SCROLLER_Top, scrollsety,
- TAG_DONE);
+ if(ami_cw->scroll_y_visible == true) {
+ RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_VSCROLL],
ami_cw->win, NULL,
+ SCROLLER_Top, scrollsety,
+ TAG_DONE);
+ }
- RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_HSCROLL],
ami_cw->win, NULL,
- SCROLLER_Top, scrollsetx,
- TAG_DONE);
+ if(ami_cw->scroll_x_visible == true) {
+ RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_HSCROLL],
ami_cw->win, NULL,
+ SCROLLER_Top, scrollsetx,
+ TAG_DONE);
+ }
/* probably need to redraw here */
ami_cw_redraw(ami_cw, NULL);
@@ -608,6 +706,9 @@ nserror ami_corewindow_init(struct ami_corewindow *ami_cw)
ami_cw->mouse_state = BROWSER_MOUSE_HOVER;
ami_cw->lastclick.tv_sec = 0;
ami_cw->lastclick.tv_usec = 0;
+ ami_cw->scroll_x_visible = true;
+ ami_cw->scroll_y_visible = true;
+ ami_cw->in_border_scroll = false;
/* allocate drawing area etc */
ami_init_layers(&ami_cw->gg, 0, 0, false);
@@ -635,6 +736,8 @@ nserror ami_corewindow_init(struct ami_corewindow *ami_cw)
GA_ID, GID_CW_HSCROLL,
ICA_TARGET, ICTARGET_IDCMP,
TAG_DONE);
+
+ ami_cw->in_border_scroll = true;
}
if(ami_cw->objects[GID_CW_VSCROLL] == NULL) {
@@ -645,6 +748,8 @@ nserror ami_corewindow_init(struct ami_corewindow *ami_cw)
GA_ID, GID_CW_VSCROLL,
ICA_TARGET, ICTARGET_IDCMP,
TAG_DONE);
+
+ ami_cw->in_border_scroll = true;
}
return NSERROR_OK;
@@ -662,6 +767,20 @@ nserror ami_corewindow_fini(struct ami_corewindow *ami_cw)
ami_cw->win = NULL;
DisposeObject(ami_cw->objects[GID_CW_WIN]);
+#if 0
+ /* ensure our scrollbars are destroyed */
+ /* it appears these are disposed anyway,
+ * even if the gadgets are no longer attached to the window */
+ if(ami_cw->in_border_scroll == false) {
+ if(ami_cw->scroll_x_visible == false) {
+ DisposeObject(ami_cw->objects[GID_CW_HSCROLL]);
+ }
+ if(ami_cw->scroll_y_visible == false) {
+ DisposeObject(ami_cw->objects[GID_CW_VSCROLL]);
+ }
+ }
+#endif
+
/* release off-screen bitmap stuff */
ami_plot_release_pens(ami_cw->gg.shared_pens);
ami_free_layers(&ami_cw->gg);
diff --git a/frontends/amiga/corewindow.h b/frontends/amiga/corewindow.h
index 42c0f03..ba754d6 100644
--- a/frontends/amiga/corewindow.h
+++ b/frontends/amiga/corewindow.h
@@ -34,6 +34,8 @@ enum {
GID_CW_DRAW, /* drawing area (space.gadget) */
GID_CW_HSCROLL, /* horizontal scroller */
GID_CW_VSCROLL, /* vertical scroller */
+ GID_CW_HSCROLLLAYOUT, /* horizontal scroller container*/
+ GID_CW_VSCROLLLAYOUT, /* vertical scroller container */
GID_CW_LAST
};
@@ -57,6 +59,11 @@ struct ami_corewindow {
APTR deferred_rects_pool;
struct MinList *deferred_rects;
+ /** keep track of the scrollbar type we're using */
+ bool in_border_scroll;
+ bool scroll_x_visible;
+ bool scroll_y_visible;
+
/** window title, must be allocated wth ami_utf8 function */
char *wintitle;
diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c
index 1508135..f94090b 100644
--- a/frontends/amiga/gui.c
+++ b/frontends/amiga/gui.c
@@ -1689,7 +1689,7 @@ static bool ami_gui_hscroll_remove(struct gui_window_2
*gwin)
IDoMethod(gwin->objects[GID_HSCROLLLAYOUT], LM_REMOVECHILD,
gwin->win, gwin->objects[GID_HSCROLL]);
#else
- SetAttrs(gwin->objects[GID_HSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HSCROLL]);
+ SetAttrs(gwin->objects[GID_HSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HSCROLL], TAG_DONE);
#endif
gwin->objects[GID_HSCROLL] = NULL;
@@ -1734,7 +1734,7 @@ static bool ami_gui_vscroll_remove(struct gui_window_2
*gwin)
IDoMethod(gwin->objects[GID_VSCROLLLAYOUT], LM_REMOVECHILD,
gwin->win, gwin->objects[GID_VSCROLL]);
#else
- SetAttrs(gwin->objects[GID_VSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_VSCROLL]);
+ SetAttrs(gwin->objects[GID_VSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_VSCROLL], TAG_DONE);
#endif
gwin->objects[GID_VSCROLL] = NULL;
@@ -3266,8 +3266,10 @@ static void ami_gui_hotlist_toolbar_remove(struct
gui_window_2 *gwin)
IDoMethod(gwin->objects[GID_HOTLISTLAYOUT], LM_REMOVECHILD,
gwin->win, gwin->objects[GID_HOTLISTSEPBAR]);
#else
- SetAttrs(gwin->objects[GID_HOTLISTLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HOTLIST]);
- SetAttrs(gwin->objects[GID_HOTLISTLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HOTLISTSEPBAR]);
+ SetAttrs(gwin->objects[GID_HOTLISTLAYOUT],
+ LAYOUT_RemoveChild, gwin->objects[GID_HOTLIST], TAG_DONE);
+ SetAttrs(gwin->objects[GID_HOTLISTLAYOUT],
+ LAYOUT_RemoveChild, gwin->objects[GID_HOTLISTSEPBAR], TAG_DONE);
#endif
FlushLayoutDomainCache((struct Gadget *)gwin->objects[GID_MAIN]);
diff --git a/frontends/amiga/sslcert.c b/frontends/amiga/sslcert.c
index b3d57ef..4685cae 100644
--- a/frontends/amiga/sslcert.c
+++ b/frontends/amiga/sslcert.c
@@ -29,6 +29,7 @@
#include <classes/window.h>
#include <gadgets/button.h>
#include <gadgets/layout.h>
+#include <gadgets/scroller.h>
#include <gadgets/space.h>
#include <images/label.h>
@@ -221,15 +222,13 @@ ami_crtvrfy_create_window(struct ami_crtvrfy_window
*crtvrfy_win)
WA_DragBar, TRUE,
WA_CloseGadget, FALSE,
WA_SizeGadget, TRUE,
- WA_SizeBRight, TRUE,
+ WA_SizeBBottom, TRUE,
WA_Height, scrn->Height / 2,
WA_PubScreen, scrn,
WA_ReportMouse, TRUE,
WA_IDCMP, IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE |
IDCMP_RAWKEY | IDCMP_GADGETUP |
IDCMP_IDCMPUPDATE |
IDCMP_EXTENDEDMOUSE | IDCMP_SIZEVERIFY,
- WINDOW_HorizProp, 1,
- WINDOW_VertProp, 1,
WINDOW_IDCMPHook, &ami_cw->idcmp_hook,
WINDOW_IDCMPHookBits, IDCMP_IDCMPUPDATE | IDCMP_EXTENDEDMOUSE,
WINDOW_SharedPort, sport,
@@ -241,12 +240,25 @@ ami_crtvrfy_create_window(struct ami_crtvrfy_window
*crtvrfy_win)
LAYOUT_AddImage, LabelObj,
LABEL_Text, crtvrfy_win->sslerr,
LabelEnd,
- LAYOUT_AddChild, ami_cw->objects[GID_CW_DRAW] =
SpaceObj,
- GA_ID, GID_CW_DRAW,
- SPACE_Transparent, TRUE,
- SPACE_BevelStyle, BVS_DISPLAY,
- GA_RelVerify, TRUE,
- SpaceEnd,
+ LAYOUT_AddChild, ami_cw->objects[GID_CW_HSCROLLLAYOUT]
= LayoutVObj,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_VSCROLLLAYOUT] = LayoutHObj,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_DRAW] = SpaceObj,
+ GA_ID, GID_CW_DRAW,
+ SPACE_Transparent, TRUE,
+ SPACE_BevelStyle, BVS_DISPLAY,
+ GA_RelVerify, TRUE,
+ SpaceEnd,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_VSCROLL] = ScrollerObj,
+ GA_ID, GID_CW_VSCROLL,
+ GA_RelVerify, TRUE,
+ ScrollerEnd,
+ LayoutEnd,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_HSCROLL] = ScrollerObj,
+ GA_ID, GID_CW_HSCROLL,
+ GA_RelVerify, TRUE,
+ SCROLLER_Orientation, SORIENT_HORIZ,
+ ScrollerEnd,
+ LayoutEnd,
LAYOUT_AddChild, LayoutHObj,
LAYOUT_AddChild,
crtvrfy_win->sslcert_objects[GID_SSLCERT_ACCEPT] = ButtonObj,
GA_ID, GID_SSLCERT_ACCEPT,
-----------------------------------------------------------------------
Summary of changes:
frontends/amiga/corewindow.c | 227 ++++++++++++++++++++++++++++++++----------
frontends/amiga/corewindow.h | 7 ++
frontends/amiga/gui.c | 10 +-
frontends/amiga/sslcert.c | 30 ++++--
4 files changed, 208 insertions(+), 66 deletions(-)
diff --git a/frontends/amiga/corewindow.c b/frontends/amiga/corewindow.c
index 024e768..052ddd6 100644
--- a/frontends/amiga/corewindow.c
+++ b/frontends/amiga/corewindow.c
@@ -47,9 +47,11 @@
#include <proto/exec.h>
#include <proto/intuition.h>
+#include <proto/layout.h>
#include <proto/utility.h>
#include <classes/window.h>
+#include <gadgets/layout.h>
#include <gadgets/scroller.h>
#include <gadgets/space.h>
#include <intuition/icclass.h>
@@ -62,6 +64,25 @@
#include "amiga/schedule.h"
#include "amiga/utf8.h"
+static void
+ami_cw_scroller_top(struct ami_corewindow *ami_cw, ULONG *restrict x, ULONG
*restrict y)
+{
+ ULONG xs = 0;
+ ULONG ys = 0;
+
+ if(ami_cw->scroll_x_visible == true) {
+ GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG
*)&xs);
+ }
+
+ if(ami_cw->scroll_y_visible == true) {
+ GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG
*)&ys);
+ }
+
+ *x = xs;
+ *y = ys;
+}
+
+
/**
* Convert co-ordinates relative to space.gadget
* into document co-ordinates
@@ -73,10 +94,10 @@
static void
ami_cw_coord_amiga_to_ns(struct ami_corewindow *ami_cw, int *restrict x, int
*restrict y)
{
- ULONG xs, ys;
+ ULONG xs = 0;
+ ULONG ys = 0;
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG *)&xs);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG *)&ys);
+ ami_cw_scroller_top(ami_cw, &xs, &ys);
*x = *x + xs;
*y = *y + ys;
@@ -109,8 +130,7 @@ ami_cw_mouse_pos(struct ami_corewindow *ami_cw, int
*restrict x, int *restrict y
if((xm < 0) || (ym < 0) || (xm > bbox->Width) || (ym > bbox->Height))
return false;
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG *)&xs);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG *)&ys);
+ ami_cw_scroller_top(ami_cw, &xs, &ys);
xm += xs;
ym += ys;
@@ -176,8 +196,7 @@ ami_cw_redraw_rect(struct ami_corewindow *ami_cw, struct
rect *r)
return;
}
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG *)&pos_x);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG *)&pos_y);
+ ami_cw_scroller_top(ami_cw, &pos_x, &pos_y);
glob = &ami_cw->gg;
@@ -319,6 +338,72 @@ ami_cw_redraw(struct ami_corewindow *ami_cw, const struct
rect *restrict r)
ami_schedule(1, ami_cw_redraw_cb, ami_cw);
}
+static void
+ami_cw_toggle_scrollbar(struct ami_corewindow *ami_cw, bool vert, bool visible)
+{
+ Object *scroller;
+ Object *layout;
+ ULONG tag;
+
+ if(vert == true) {
+ if(visible == ami_cw->scroll_y_visible) {
+ return;
+ } else {
+ scroller = ami_cw->objects[GID_CW_VSCROLL];
+ layout = ami_cw->objects[GID_CW_VSCROLLLAYOUT];
+ tag = WINDOW_VertProp;
+ ami_cw->scroll_y_visible = visible;
+ }
+ } else {
+ if(visible == ami_cw->scroll_x_visible) {
+ return;
+ } else {
+ scroller = ami_cw->objects[GID_CW_HSCROLL];
+ layout = ami_cw->objects[GID_CW_HSCROLLLAYOUT];
+ tag = WINDOW_HorizProp;
+ ami_cw->scroll_x_visible = visible;
+ }
+ }
+
+ if(visible == true) {
+ if(ami_cw->in_border_scroll == true) {
+ SetAttrs(ami_cw->objects[GID_CW_WIN],
+ tag, 1,
+ TAG_DONE);
+ } else {
+#ifdef __amigaos4__
+ IDoMethod(layout, LM_ADDCHILD, ami_cw->win, scroller,
NULL);
+#else
+ SetAttrs(layout, LAYOUT_AddChild, scroller, TAG_DONE);
+#endif
+ }
+ } else {
+ if(ami_cw->in_border_scroll == true) {
+ SetAttrs(ami_cw->objects[GID_CW_WIN],
+ tag, -1,
+ TAG_DONE);
+ } else {
+#ifdef __amigaos4__
+ IDoMethod(layout, LM_REMOVECHILD, ami_cw->win,
scroller);
+#else
+ SetAttrs(layout, LAYOUT_RemoveChild, scroller,
TAG_DONE);
+#endif
+ }
+ }
+
+#if 0
+ /* in-window scrollbars aren't getting hidden until the window is
resized
+ * this code should fix it, but it isn't working */
+ if(ami_cw->in_border_scroll == false) {
+ FlushLayoutDomainCache((struct Gadget
*)ami_cw->objects[GID_CW_WIN]);
+ RethinkLayout((struct Gadget *)ami_cw->objects[GID_CW_WIN],
+ ami_cw->win, NULL, TRUE);
+
+ /* probably need to redraw here */
+ ami_cw_redraw(ami_cw, NULL);
+ }
+#endif
+}
static void
ami_cw_close(void *w)
@@ -376,7 +461,7 @@ ami_cw_event(void *w)
int nskey;
int key_state = 0;
struct timeval curtime;
- int x, y;
+ int x = 0, y = 0;
while((result = RA_HandleInput(ami_cw->objects[GID_CW_WIN], &code)) !=
WMHI_LASTMSG) {
switch(result & WMHI_CLASSMASK) {
@@ -393,48 +478,49 @@ ami_cw_event(void *w)
key_state =
ami_gui_get_quals(ami_cw->objects[GID_CW_WIN]);
- case SELECTDOWN:
- ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_1;
- break;
+ switch(code) {
+ case SELECTDOWN:
+ ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_1;
+ break;
- case MIDDLEDOWN:
- ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_2;
- break;
+ case MIDDLEDOWN:
+ ami_cw->mouse_state =
BROWSER_MOUSE_PRESS_2;
+ break;
- case SELECTUP:
- if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_1) {
- CurrentTime((ULONG
*)&curtime.tv_sec, (ULONG *)&curtime.tv_usec);
+ case SELECTUP:
+ if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_1) {
+ CurrentTime((ULONG
*)&curtime.tv_sec, (ULONG *)&curtime.tv_usec);
- ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_1;
+ ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_1;
- if(ami_cw->lastclick.tv_sec) {
-
if(DoubleClick(ami_cw->lastclick.tv_sec,
-
ami_cw->lastclick.tv_usec,
-
curtime.tv_sec, curtime.tv_usec))
-
ami_cw->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK;
- }
+
if(ami_cw->lastclick.tv_sec) {
+
if(DoubleClick(ami_cw->lastclick.tv_sec,
+
ami_cw->lastclick.tv_usec,
+
curtime.tv_sec, curtime.tv_usec))
+
ami_cw->mouse_state |= BROWSER_MOUSE_DOUBLE_CLICK;
+ }
- if(ami_cw->mouse_state &
BROWSER_MOUSE_DOUBLE_CLICK) {
-
ami_cw->lastclick.tv_sec = 0;
-
ami_cw->lastclick.tv_usec = 0;
- } else {
-
ami_cw->lastclick.tv_sec = curtime.tv_sec;
-
ami_cw->lastclick.tv_usec = curtime.tv_usec;
+ if(ami_cw->mouse_state
& BROWSER_MOUSE_DOUBLE_CLICK) {
+
ami_cw->lastclick.tv_sec = 0;
+
ami_cw->lastclick.tv_usec = 0;
+ } else {
+
ami_cw->lastclick.tv_sec = curtime.tv_sec;
+
ami_cw->lastclick.tv_usec = curtime.tv_usec;
+ }
}
- }
-
- ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
- ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
- break;
- case MIDDLEUP:
- if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_2)
- ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_2;
+ ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
+ ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
+ break;
- ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
- ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
- break;
+ case MIDDLEUP:
+ if(ami_cw->mouse_state &
BROWSER_MOUSE_PRESS_2)
+ ami_cw->mouse_state =
BROWSER_MOUSE_CLICK_2;
+ ami_cw->mouse(ami_cw,
ami_cw->mouse_state | key_state, x, y);
+ ami_cw->mouse_state =
BROWSER_MOUSE_HOVER;
+ break;
+ }
ami_cw->mouse(ami_cw, ami_cw->mouse_state |
key_state, x, y);
break;
@@ -524,12 +610,22 @@ static void
ami_cw_update_size(struct core_window *cw, int width, int height)
{
struct ami_corewindow *ami_cw = (struct ami_corewindow *)cw;
-
- /* I'm assuming this is telling me the new page size, not wanting the
window physically resized */
int win_w, win_h;
+
ami_cw_get_window_dimensions((struct core_window *)ami_cw, &win_w,
&win_h);
+ if(width == -1) {
+ ami_cw_toggle_scrollbar(ami_cw, false, false);
+ return;
+ }
+
+ if(height == -1) {
+ ami_cw_toggle_scrollbar(ami_cw, true, false);
+ return;
+ }
+
if(ami_cw->objects[GID_CW_VSCROLL]) {
+ ami_cw_toggle_scrollbar(ami_cw, true, true);
RefreshSetGadgetAttrs((struct Gadget
*)ami_cw->objects[GID_CW_VSCROLL], ami_cw->win, NULL,
SCROLLER_Total, (ULONG)height,
SCROLLER_Visible, win_h,
@@ -537,6 +633,7 @@ ami_cw_update_size(struct core_window *cw, int width, int
height)
}
if(ami_cw->objects[GID_CW_HSCROLL]) {
+ ami_cw_toggle_scrollbar(ami_cw, false, true);
RefreshSetGadgetAttrs((struct Gadget
*)ami_cw->objects[GID_CW_HSCROLL], ami_cw->win, NULL,
SCROLLER_Total, (ULONG)width,
SCROLLER_Visible, win_w,
@@ -553,13 +650,12 @@ ami_cw_scroll_visible(struct core_window *cw, const
struct rect *r)
int scrollsetx;
int scrollsety;
int win_w = 0, win_h = 0;
- int win_x0, win_x1;
- int win_y0, win_y1;
+ ULONG win_x0, win_y0;
+ int win_x1, win_y1;
ami_cw_get_window_dimensions((struct core_window *)ami_cw, &win_w,
&win_h);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_VSCROLL], (ULONG
*)&win_y0);
- GetAttr(SCROLLER_Top, ami_cw->objects[GID_CW_HSCROLL], (ULONG
*)&win_x0);
+ ami_cw_scroller_top(ami_cw, &win_x0, &win_y0);
win_x1 = win_x0 + win_w;
win_y1 = win_y0 + win_h;
@@ -569,13 +665,17 @@ ami_cw_scroll_visible(struct core_window *cw, const
struct rect *r)
if(r->x1 > win_x1) scrollsetx = r->x1 - win_w;
if(r->x0 < win_x0) scrollsetx = r->x0;
- RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_VSCROLL],
ami_cw->win, NULL,
- SCROLLER_Top, scrollsety,
- TAG_DONE);
+ if(ami_cw->scroll_y_visible == true) {
+ RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_VSCROLL],
ami_cw->win, NULL,
+ SCROLLER_Top, scrollsety,
+ TAG_DONE);
+ }
- RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_HSCROLL],
ami_cw->win, NULL,
- SCROLLER_Top, scrollsetx,
- TAG_DONE);
+ if(ami_cw->scroll_x_visible == true) {
+ RefreshSetGadgetAttrs((APTR)ami_cw->objects[GID_CW_HSCROLL],
ami_cw->win, NULL,
+ SCROLLER_Top, scrollsetx,
+ TAG_DONE);
+ }
/* probably need to redraw here */
ami_cw_redraw(ami_cw, NULL);
@@ -608,6 +708,9 @@ nserror ami_corewindow_init(struct ami_corewindow *ami_cw)
ami_cw->mouse_state = BROWSER_MOUSE_HOVER;
ami_cw->lastclick.tv_sec = 0;
ami_cw->lastclick.tv_usec = 0;
+ ami_cw->scroll_x_visible = true;
+ ami_cw->scroll_y_visible = true;
+ ami_cw->in_border_scroll = false;
/* allocate drawing area etc */
ami_init_layers(&ami_cw->gg, 0, 0, false);
@@ -635,6 +738,8 @@ nserror ami_corewindow_init(struct ami_corewindow *ami_cw)
GA_ID, GID_CW_HSCROLL,
ICA_TARGET, ICTARGET_IDCMP,
TAG_DONE);
+
+ ami_cw->in_border_scroll = true;
}
if(ami_cw->objects[GID_CW_VSCROLL] == NULL) {
@@ -645,6 +750,8 @@ nserror ami_corewindow_init(struct ami_corewindow *ami_cw)
GA_ID, GID_CW_VSCROLL,
ICA_TARGET, ICTARGET_IDCMP,
TAG_DONE);
+
+ ami_cw->in_border_scroll = true;
}
return NSERROR_OK;
@@ -662,6 +769,20 @@ nserror ami_corewindow_fini(struct ami_corewindow *ami_cw)
ami_cw->win = NULL;
DisposeObject(ami_cw->objects[GID_CW_WIN]);
+#if 0
+ /* ensure our scrollbars are destroyed */
+ /* it appears these are disposed anyway,
+ * even if the gadgets are no longer attached to the window */
+ if(ami_cw->in_border_scroll == false) {
+ if(ami_cw->scroll_x_visible == false) {
+ DisposeObject(ami_cw->objects[GID_CW_HSCROLL]);
+ }
+ if(ami_cw->scroll_y_visible == false) {
+ DisposeObject(ami_cw->objects[GID_CW_VSCROLL]);
+ }
+ }
+#endif
+
/* release off-screen bitmap stuff */
ami_plot_release_pens(ami_cw->gg.shared_pens);
ami_free_layers(&ami_cw->gg);
diff --git a/frontends/amiga/corewindow.h b/frontends/amiga/corewindow.h
index 42c0f03..ba754d6 100644
--- a/frontends/amiga/corewindow.h
+++ b/frontends/amiga/corewindow.h
@@ -34,6 +34,8 @@ enum {
GID_CW_DRAW, /* drawing area (space.gadget) */
GID_CW_HSCROLL, /* horizontal scroller */
GID_CW_VSCROLL, /* vertical scroller */
+ GID_CW_HSCROLLLAYOUT, /* horizontal scroller container*/
+ GID_CW_VSCROLLLAYOUT, /* vertical scroller container */
GID_CW_LAST
};
@@ -57,6 +59,11 @@ struct ami_corewindow {
APTR deferred_rects_pool;
struct MinList *deferred_rects;
+ /** keep track of the scrollbar type we're using */
+ bool in_border_scroll;
+ bool scroll_x_visible;
+ bool scroll_y_visible;
+
/** window title, must be allocated wth ami_utf8 function */
char *wintitle;
diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c
index 1508135..f94090b 100644
--- a/frontends/amiga/gui.c
+++ b/frontends/amiga/gui.c
@@ -1689,7 +1689,7 @@ static bool ami_gui_hscroll_remove(struct gui_window_2
*gwin)
IDoMethod(gwin->objects[GID_HSCROLLLAYOUT], LM_REMOVECHILD,
gwin->win, gwin->objects[GID_HSCROLL]);
#else
- SetAttrs(gwin->objects[GID_HSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HSCROLL]);
+ SetAttrs(gwin->objects[GID_HSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HSCROLL], TAG_DONE);
#endif
gwin->objects[GID_HSCROLL] = NULL;
@@ -1734,7 +1734,7 @@ static bool ami_gui_vscroll_remove(struct gui_window_2
*gwin)
IDoMethod(gwin->objects[GID_VSCROLLLAYOUT], LM_REMOVECHILD,
gwin->win, gwin->objects[GID_VSCROLL]);
#else
- SetAttrs(gwin->objects[GID_VSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_VSCROLL]);
+ SetAttrs(gwin->objects[GID_VSCROLLLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_VSCROLL], TAG_DONE);
#endif
gwin->objects[GID_VSCROLL] = NULL;
@@ -3266,8 +3266,10 @@ static void ami_gui_hotlist_toolbar_remove(struct
gui_window_2 *gwin)
IDoMethod(gwin->objects[GID_HOTLISTLAYOUT], LM_REMOVECHILD,
gwin->win, gwin->objects[GID_HOTLISTSEPBAR]);
#else
- SetAttrs(gwin->objects[GID_HOTLISTLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HOTLIST]);
- SetAttrs(gwin->objects[GID_HOTLISTLAYOUT], LAYOUT_RemoveChild,
gwin->objects[GID_HOTLISTSEPBAR]);
+ SetAttrs(gwin->objects[GID_HOTLISTLAYOUT],
+ LAYOUT_RemoveChild, gwin->objects[GID_HOTLIST], TAG_DONE);
+ SetAttrs(gwin->objects[GID_HOTLISTLAYOUT],
+ LAYOUT_RemoveChild, gwin->objects[GID_HOTLISTSEPBAR], TAG_DONE);
#endif
FlushLayoutDomainCache((struct Gadget *)gwin->objects[GID_MAIN]);
diff --git a/frontends/amiga/sslcert.c b/frontends/amiga/sslcert.c
index b3d57ef..4685cae 100644
--- a/frontends/amiga/sslcert.c
+++ b/frontends/amiga/sslcert.c
@@ -29,6 +29,7 @@
#include <classes/window.h>
#include <gadgets/button.h>
#include <gadgets/layout.h>
+#include <gadgets/scroller.h>
#include <gadgets/space.h>
#include <images/label.h>
@@ -221,15 +222,13 @@ ami_crtvrfy_create_window(struct ami_crtvrfy_window
*crtvrfy_win)
WA_DragBar, TRUE,
WA_CloseGadget, FALSE,
WA_SizeGadget, TRUE,
- WA_SizeBRight, TRUE,
+ WA_SizeBBottom, TRUE,
WA_Height, scrn->Height / 2,
WA_PubScreen, scrn,
WA_ReportMouse, TRUE,
WA_IDCMP, IDCMP_MOUSEMOVE | IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE |
IDCMP_RAWKEY | IDCMP_GADGETUP |
IDCMP_IDCMPUPDATE |
IDCMP_EXTENDEDMOUSE | IDCMP_SIZEVERIFY,
- WINDOW_HorizProp, 1,
- WINDOW_VertProp, 1,
WINDOW_IDCMPHook, &ami_cw->idcmp_hook,
WINDOW_IDCMPHookBits, IDCMP_IDCMPUPDATE | IDCMP_EXTENDEDMOUSE,
WINDOW_SharedPort, sport,
@@ -241,12 +240,25 @@ ami_crtvrfy_create_window(struct ami_crtvrfy_window
*crtvrfy_win)
LAYOUT_AddImage, LabelObj,
LABEL_Text, crtvrfy_win->sslerr,
LabelEnd,
- LAYOUT_AddChild, ami_cw->objects[GID_CW_DRAW] =
SpaceObj,
- GA_ID, GID_CW_DRAW,
- SPACE_Transparent, TRUE,
- SPACE_BevelStyle, BVS_DISPLAY,
- GA_RelVerify, TRUE,
- SpaceEnd,
+ LAYOUT_AddChild, ami_cw->objects[GID_CW_HSCROLLLAYOUT]
= LayoutVObj,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_VSCROLLLAYOUT] = LayoutHObj,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_DRAW] = SpaceObj,
+ GA_ID, GID_CW_DRAW,
+ SPACE_Transparent, TRUE,
+ SPACE_BevelStyle, BVS_DISPLAY,
+ GA_RelVerify, TRUE,
+ SpaceEnd,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_VSCROLL] = ScrollerObj,
+ GA_ID, GID_CW_VSCROLL,
+ GA_RelVerify, TRUE,
+ ScrollerEnd,
+ LayoutEnd,
+ LAYOUT_AddChild,
ami_cw->objects[GID_CW_HSCROLL] = ScrollerObj,
+ GA_ID, GID_CW_HSCROLL,
+ GA_RelVerify, TRUE,
+ SCROLLER_Orientation, SORIENT_HORIZ,
+ ScrollerEnd,
+ LayoutEnd,
LAYOUT_AddChild, LayoutHObj,
LAYOUT_AddChild,
crtvrfy_win->sslcert_objects[GID_SSLCERT_ACCEPT] = ButtonObj,
GA_ID, GID_SSLCERT_ACCEPT,
--
NetSurf Browser
_______________________________________________
netsurf-commits mailing list
[email protected]
http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/netsurf-commits-netsurf-browser.org