summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2004-08-31 19:51:29 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2004-08-31 19:51:29 +0000
commit13ae21f22b569683500350cee7c63584f2e4fbfe (patch)
tree93c71bacd72054c98789d7aa5979909c60246cfc
parentb14219359d5b2eef912e42d61bd2c75e18708f01 (diff)
downloadnetsurf-13ae21f22b569683500350cee7c63584f2e4fbfe.tar.gz
netsurf-13ae21f22b569683500350cee7c63584f2e4fbfe.tar.bz2
[project @ 2004-08-31 19:51:29 by rjw]
Remove flicker from repeatedly setting icons as shaded. svn path=/import/netsurf/; revision=1259
-rw-r--r--riscos/wimp.c15
-rw-r--r--riscos/wimp.h2
2 files changed, 13 insertions, 4 deletions
diff --git a/riscos/wimp.c b/riscos/wimp.c
index 395c1ae31..d7af43a14 100644
--- a/riscos/wimp.c
+++ b/riscos/wimp.c
@@ -251,14 +251,23 @@ bool ro_gui_get_icon_selected_state(wimp_w w, wimp_i i) {
/**
- * Set the selected state of an icon.
+ * Set the shaded state of an icon.
*
* \param w window handle
* \param i icon handle
* \param state selected state
*/
-#define ro_gui_set_icon_shaded_state(w, i, state) \
- xwimp_set_icon_state(w, i, (state ? wimp_ICON_SHADED : 0), wimp_ICON_SHADED)
+void ro_gui_set_icon_shaded_state(wimp_w w, wimp_i i, bool state) {
+ os_error *error;
+ if (ro_gui_get_icon_selected_state(w, i) == state) return;
+ error = xwimp_set_icon_state(w, i,
+ (state ? wimp_ICON_SHADED : 0), wimp_ICON_SHADED);
+ if (error) {
+ LOG(("xwimp_get_icon_state: 0x%x: %s",
+ error->errnum, error->errmess));
+ warn_user("WimpError", error->errmess);
+ }
+}
/**
diff --git a/riscos/wimp.h b/riscos/wimp.h
index 6988983a6..26f44bd74 100644
--- a/riscos/wimp.h
+++ b/riscos/wimp.h
@@ -39,7 +39,7 @@ void ro_gui_set_icon_string(wimp_w w, wimp_i i, const char *text);
void ro_gui_set_icon_integer(wimp_w w, wimp_i i, int value);
void ro_gui_set_icon_selected_state(wimp_w w, wimp_i i, bool state);
bool ro_gui_get_icon_selected_state(wimp_w w, wimp_i i);
-#define ro_gui_set_icon_shaded_state(w, i, state) xwimp_set_icon_state(w, i, (state ? wimp_ICON_SHADED : 0), wimp_ICON_SHADED)
+void ro_gui_set_icon_shaded_state(wimp_w w, wimp_i i, bool state);
bool ro_gui_get_icon_shaded_state(wimp_w w, wimp_i i);
void ro_gui_set_window_title(wimp_w w, const char *title);
void ro_gui_set_caret_first(wimp_w w);