summaryrefslogtreecommitdiff
path: root/riscos/dialog.c
diff options
context:
space:
mode:
authorAdrian Lees <adrian@aemulor.com>2005-04-17 23:32:09 +0000
committerAdrian Lees <adrian@aemulor.com>2005-04-17 23:32:09 +0000
commit89d98d057772721036504bd5edc8446d5d592234 (patch)
treeb6d507a7bd6a93472c4e8daec36a067715b2cb49 /riscos/dialog.c
parentf3f63a1cac19ee1833965e77f7fbc3d6326bd25b (diff)
downloadnetsurf-89d98d057772721036504bd5edc8446d5d592234.tar.gz
netsurf-89d98d057772721036504bd5edc8446d5d592234.tar.bz2
[project @ 2005-04-17 23:32:09 by adrianl]
better keyboard support for scale and find dialogs svn path=/import/netsurf/; revision=1665
Diffstat (limited to 'riscos/dialog.c')
-rw-r--r--riscos/dialog.c58
1 files changed, 45 insertions, 13 deletions
diff --git a/riscos/dialog.c b/riscos/dialog.c
index 1775d616c..84713685d 100644
--- a/riscos/dialog.c
+++ b/riscos/dialog.c
@@ -108,7 +108,9 @@ static void ro_gui_dialog_click_config_th(wimp_pointer *pointer);
static void ro_gui_dialog_click_config_th_pane(wimp_pointer *pointer);
static void ro_gui_dialog_update_config_font(void);
static void ro_gui_dialog_click_config_font(wimp_pointer *pointer);
+static unsigned ro_gui_clamp_scale(unsigned scale);
static void ro_gui_dialog_click_zoom(wimp_pointer *pointer);
+static bool ro_gui_zoom_keypress(wimp_key *key);
static void ro_gui_dialog_click_open_url(wimp_pointer *pointer);
static void ro_gui_dialog_click_warning(wimp_pointer *pointer);
static const char *language_name(const char *code);
@@ -406,6 +408,8 @@ bool ro_gui_dialog_keypress(wimp_key *key)
if (key->w == dialog_print)
return ro_gui_print_keypress(key);
#endif
+ if (key->w == dialog_zoom)
+ return ro_gui_zoom_keypress(key);
if (key->c == wimp_KEY_ESCAPE) {
ro_gui_dialog_close(key->w);
return true;
@@ -1147,6 +1151,23 @@ void ro_gui_dialog_font_menu_selection(int item)
/**
+ * Ensure that a scale percentage lies within a sensible range.
+ *
+ * \param scale scale percentage
+ * \return corrected scale value
+ */
+
+unsigned ro_gui_clamp_scale(unsigned scale)
+{
+ if (scale < 10)
+ scale = 10;
+ else if (1600 < scale)
+ scale = 1600;
+ return scale;
+}
+
+
+/**
* Handle clicks in the Scale view dialog.
*/
@@ -1154,7 +1175,6 @@ void ro_gui_dialog_click_zoom(wimp_pointer *pointer)
{
unsigned int scale;
int stepping = 10;
- struct content *c;
scale = atoi(ro_gui_get_icon_string(dialog_zoom, ICON_ZOOM_VALUE));
/* Adjust moves values the opposite direction
@@ -1171,20 +1191,11 @@ void ro_gui_dialog_click_zoom(wimp_pointer *pointer)
case ICON_ZOOM_200: scale = 200; break;
}
- if (scale < 10)
- scale = 10;
- else if (1600 < scale)
- scale = 1600;
+ scale = ro_gui_clamp_scale(scale);
ro_gui_set_icon_integer(dialog_zoom, ICON_ZOOM_VALUE, scale);
- if (pointer->i == ICON_ZOOM_OK) {
- ro_gui_current_zoom_gui->option.scale = scale * 0.01;
- ro_gui_current_zoom_gui->reformat_pending = true;
- c = ro_gui_current_zoom_gui->bw->current_content;
- if ((c) && (c->type != CONTENT_HTML))
- browser_window_update(ro_gui_current_zoom_gui->bw, false);
- gui_reformat_pending = true;
- }
+ if (pointer->i == ICON_ZOOM_OK)
+ ro_gui_window_set_scale(ro_gui_current_zoom_gui, (float)scale);
if (pointer->buttons == wimp_CLICK_ADJUST &&
pointer->i == ICON_ZOOM_CANCEL)
@@ -1200,6 +1211,27 @@ void ro_gui_dialog_click_zoom(wimp_pointer *pointer)
/**
+ * Handle keypresses in the Scale view dialog.
+ *
+ * \param key keypress info from Wimp
+ */
+
+bool ro_gui_zoom_keypress(wimp_key *key)
+{
+ if (key->c == wimp_KEY_RETURN) {
+ unsigned int scale;
+ scale = atoi(ro_gui_get_icon_string(dialog_zoom, ICON_ZOOM_VALUE));
+ scale = ro_gui_clamp_scale(scale);
+ ro_gui_window_set_scale(ro_gui_current_zoom_gui, scale * 0.01);
+ ro_gui_dialog_close(dialog_zoom);
+ ro_gui_menu_closed();
+ return true;
+ }
+ return false;
+}
+
+
+/**
* Prepares the Scale view dialog.
*/