summaryrefslogtreecommitdiff
path: root/frontends
diff options
context:
space:
mode:
authorChris Young <chris@unsatisfactorysoftware.co.uk>2019-05-08 00:56:07 +0100
committerChris Young <chris@unsatisfactorysoftware.co.uk>2019-05-08 00:56:07 +0100
commitae36d35728f8622396faba7aeb58434aff2d0331 (patch)
treed5a1d54ed7f23f73b70815a5a48c7f5359abc64d /frontends
parenta5aa53657c6feaf8ddd29ee33f8d5e89138ec996 (diff)
downloadnetsurf-ae36d35728f8622396faba7aeb58434aff2d0331.tar.gz
netsurf-ae36d35728f8622396faba7aeb58434aff2d0331.tar.bz2
throbber crap
Diffstat (limited to 'frontends')
-rw-r--r--frontends/amiga/gui.c39
-rw-r--r--frontends/amiga/gui.h21
-rw-r--r--frontends/amiga/theme.c20
3 files changed, 70 insertions, 10 deletions
diff --git a/frontends/amiga/gui.c b/frontends/amiga/gui.c
index 3920616e3..2132a2408 100644
--- a/frontends/amiga/gui.c
+++ b/frontends/amiga/gui.c
@@ -379,6 +379,45 @@ void ami_gui_set_throbbing(struct gui_window *gw, bool throbbing)
gw->throbbing = throbbing;
}
+int ami_gui_get_throbber_frame(struct gui_window *gw)
+{
+ assert(gw != NULL);
+ assert(gw->shared != NULL);
+ return gw->shared->throbber_frame;
+}
+
+void ami_gui_set_throbber_frame(struct gui_window *gw, int frame)
+{
+ assert(gw != NULL);
+ assert(gw->shared != NULL);
+ gw->shared->throbber_frame = frame;
+}
+
+Object *ami_gui_get_object(struct gui_window *gw, int object_type)
+{
+ ULONG obj = 0;
+
+ assert(gw != NULL);
+ assert(gw->shared != NULL);
+
+ switch(object_type) {
+ case AMI_GAD_THROBBER:
+ obj = GID_THROBBER;
+ break;
+
+ case AMI_GAD_TABS:
+ obj = GID_TABS;
+ break;
+
+ default:
+ return NULL;
+ break;
+ }
+
+ return gw->shared->objects[obj];
+}
+
+
struct Window *ami_gui2_get_window(struct gui_window_2 *gwin)
{
assert(gwin != NULL);
diff --git a/frontends/amiga/gui.h b/frontends/amiga/gui.h
index e1042c517..bc1dc3903 100644
--- a/frontends/amiga/gui.h
+++ b/frontends/amiga/gui.h
@@ -38,6 +38,12 @@
#define HOOKF(ret,func,type,ptr,msgtype) static ASM ret func(REG(a0, struct Hook *hook),REG(a2, type ptr), REG(a1, msgtype msg))
#endif
+/* valid options for ami_gui_get_object */
+enum {
+ AMI_GAD_THROBBER = 0,
+ AMI_GAD_TABS
+};
+
enum
{
OID_MAIN = 0,
@@ -323,11 +329,26 @@ void ami_gui_set_find_window(struct gui_window *gw, struct find_window *fw);
bool ami_gui_get_throbbing(struct gui_window *gw);
/**
+ * Get throbbing frame from gui_window
+ */
+int ami_gui_get_throbber_frame(struct gui_window *gw);
+
+/**
+ * Set throbbing frame in gui_window
+ */
+void ami_gui_set_throbber_frame(struct gui_window *gw, int frame);
+
+/**
* Set throbbing status in gui_window
*/
void ami_gui_set_throbbing(struct gui_window *gw, bool throbbing);
/**
+ * Get object from gui_window
+ */
+Object *ami_gui_get_object(struct gui_window *gw, int object_type);
+
+/**
* Get window from gui_window
*/
struct Window *ami_gui_get_window(struct gui_window *gw);
diff --git a/frontends/amiga/theme.c b/frontends/amiga/theme.c
index c20d02527..900f465a1 100644
--- a/frontends/amiga/theme.c
+++ b/frontends/amiga/theme.c
@@ -432,13 +432,13 @@ void gui_window_start_throbber(struct gui_window *g)
if(ami_gui_get_tab_node(g) && (ami_gui_get_gui_window_2(g)->tabs > 1))
{
SetClickTabNodeAttrs(ami_gui_get_tab_node(g), TNA_Flagged, TRUE, TAG_DONE);
- RefreshGadgets((APTR)ami_gui_get_gui_window_2(g)->objects[GID_TABS],
+ RefreshGadgets((APTR)ami_gui_get_object(g, AMI_GAD_TABS),
ami_gui_get_window(g), NULL);
}
#endif
ami_gui_set_throbbing(g, true);
- if(ami_gui_get_gui_window_2(g)->throbber_frame == 0) ami_gui_get_gui_window_2(g)->throbber_frame = 1;
+ if(ami_gui_get_throbber_frame(g) == 0) ami_gui_set_throbber_frame(g, 1);
ami_throbber_redraw_schedule(throbber_update_interval, g);
}
@@ -453,13 +453,13 @@ void gui_window_stop_throbber(struct gui_window *g)
if(ami_gui_get_tab_node(g) && (ami_gui_get_gui_window_2(g)->tabs > 1))
{
SetClickTabNodeAttrs(ami_gui_get_tab_node(g), TNA_Flagged, FALSE, TAG_DONE);
- RefreshGadgets((APTR)ami_gui_get_gui_window_2(g)->objects[GID_TABS],
+ RefreshGadgets((APTR)ami_gui_get_object(g, AMI_GAD_TABS),
ami_gui_get_window(g), NULL);
}
#endif
if(IS_CURRENT_GW(ami_gui_get_gui_window_2(g), g)) {
- if(ami_gui_get_space_box(ami_gui_get_gui_window_2(g)->objects[GID_THROBBER], &bbox) != NSERROR_OK) {
+ if(ami_gui_get_space_box(ami_gui_get_object(g, AMI_GAD_THROBBER), &bbox) != NSERROR_OK) {
amiga_warn_user("NoMemory", "");
return;
}
@@ -484,17 +484,17 @@ static void ami_throbber_update(void *p)
int frame = 0;
if(!g) return;
- if(!ami_gui_get_gui_window_2(g)->objects[GID_THROBBER]) return;
+ if(!ami_gui_get_object(g, AMI_GAD_THROBBER)) return;
if(ami_gui_get_throbbing(g) == true) {
- frame = ami_gui_get_gui_window_2(g)->throbber_frame;
- ami_gui_get_gui_window_2(g)->throbber_frame++;
- if(ami_gui_get_gui_window_2(g)->throbber_frame > (throbber_frames-1))
- ami_gui_get_gui_window_2(g)->throbber_frame=1;
+ frame = ami_gui_get_throbber_frame(g);
+ ami_gui_set_throbber_frame(g, frame + 1);
+ if(ami_gui_get_throbber_frame(g) > (throbber_frames-1))
+ ami_gui_set_throbber_frame(g, 1);
}
if(IS_CURRENT_GW(ami_gui_get_gui_window_2(g),g)) {
- if(ami_gui_get_space_box(ami_gui_get_gui_window_2(g)->objects[GID_THROBBER], &bbox) != NSERROR_OK) {
+ if(ami_gui_get_space_box(ami_gui_get_object(g, AMI_GAD_THROBBER), &bbox) != NSERROR_OK) {
amiga_warn_user("NoMemory", "");
return;
}