r2941 phlamethrower - /trunk/netsurf/render/layout.c
by netsurf@semichrome.net
Author: phlamethrower
Date: Sun Sep 10 14:59:19 2006
New Revision: 2941
URL: http://svn.semichrome.net?rev=2941&view=rev
Log:
Fixed textarea wordwrap if first character on line is a space
Modified:
trunk/netsurf/render/layout.c
Modified: trunk/netsurf/render/layout.c
URL: http://svn.semichrome.net/trunk/netsurf/render/layout.c?rev=2941&r1=2940&...
==============================================================================
--- trunk/netsurf/render/layout.c (original)
+++ trunk/netsurf/render/layout.c Sun Sep 10 14:59:19 2006
@@ -1279,7 +1279,12 @@
split_box->type == BOX_TEXT) &&
!split_box->object &&
!split_box->gadget && split_box->text) {
+ /* skip leading spaces, otherwise code gets fooled into thinking it's all one long word */
for (i = 0; i != split_box->length &&
+ split_box->text[i] == ' '; i++)
+ ;
+ /* find end of word */
+ for (; i != split_box->length &&
split_box->text[i] != ' '; i++)
;
if (i != split_box->length)
16 years, 8 months
r2939 phlamethrower - /trunk/netsurf/makefile
by netsurf@semichrome.net
Author: phlamethrower
Date: Sun Sep 10 14:25:19 2006
New Revision: 2939
URL: http://svn.semichrome.net?rev=2939&view=rev
Log:
jmb's improved makefile, blame him
Modified:
trunk/netsurf/makefile
Modified: trunk/netsurf/makefile
URL: http://svn.semichrome.net/trunk/netsurf/makefile?rev=2939&r1=2938&r2=2939...
==============================================================================
--- trunk/netsurf/makefile (original)
+++ trunk/netsurf/makefile Sun Sep 10 14:25:19 2006
@@ -16,6 +16,8 @@
#
# "riscos", "riscos_small", "ncos", and "riscos_debug" can be compiled under
# RISC OS, or cross-compiled using GCCSDK.
+
+SYSTEM_CC ?= gcc
OBJECTS_COMMON = content.o fetch.o fetchcache.o urldb.o # content/
OBJECTS_COMMON += css.o css_enum.o parser.o ruleset.o scanner.o # css/
@@ -85,20 +87,20 @@
SOURCES_NCOS=$(OBJECTS_NCOS:.o=.c)
OBJS_NCOS=$(OBJECTS_NCOS:%.o=$(OBJDIR_NCOS)/%.o)
-OBJDIR_DEBUG = $(shell $(CC_DEBUG) -dumpmachine)-debug
+OBJDIR_DEBUG = $(shell $(SYSTEM_CC) -dumpmachine)-debug
SOURCES_DEBUG=$(OBJECTS_DEBUG:.o=.c)
OBJS_DEBUG=$(OBJECTS_DEBUG:%.o=$(OBJDIR_DEBUG)/%.o)
OBJS_DEBUGRO=$(OBJECTS_DEBUGRO:%.o=$(OBJDIR_RISCOS)/%.o)
-OBJDIR_GTK = $(shell /usr/bin/gcc -dumpmachine)-gtk
+OBJDIR_GTK = $(shell $(SYSTEM_CC) -dumpmachine)-gtk
SOURCES_GTK=$(OBJECTS_GTK:.o=.c)
OBJS_GTK=$(OBJECTS_GTK:%.o=$(OBJDIR_GTK)/%.o)
# Inclusion of platform specific files has to occur after the OBJDIR stuff as
-# that is refered to in the files
-
-OS = $(word 2,$(subst -, ,$(shell /usr/bin/gcc -dumpmachine)))
+# that is referred to in the files
+
+OS = $(word 2,$(subst -, ,$(shell $(SYSTEM_CC) -dumpmachine)))
ifeq ($(OS),riscos)
include riscos.mk
else
@@ -160,7 +162,7 @@
gtk: nsgtk
nsgtk: $(OBJS_GTK)
- /usr/bin/gcc -o nsgtk $^ `pkg-config --cflags --libs libglade-2.0 gtk+-2.0 gthread-2.0 gmodule-2.0` \
+ $(SYSTEM_CC) -o nsgtk $^ `pkg-config --cflags --libs libglade-2.0 gtk+-2.0 gthread-2.0 gmodule-2.0` \
$(LDFLAGS_DEBUG)
netsurf.zip: $(RUNIMAGE)
@@ -181,7 +183,7 @@
@$(CC_DEBUG) -o $@ -c $(CFLAGS_DEBUG) $<
$(OBJDIR_GTK)/%.o : %.c
@echo "==> $<"
- @/usr/bin/gcc -o $@ -c $(CFLAGS_GTK) $<
+ @$(SYSTEM_CC) -o $@ -c $(CFLAGS_GTK) $<
# pattern rules for asm source
$(OBJDIR_RISCOS)/%.o : %.s
16 years, 8 months
r2938 jmb - /trunk/netsurf/riscos/window.c
by netsurf@semichrome.net
Author: jmb
Date: Sat Sep 9 23:07:08 2006
New Revision: 2938
URL: http://svn.semichrome.net?rev=2938&view=rev
Log:
Fix scale view shortcuts to use new scaling mechanism
Modified:
trunk/netsurf/riscos/window.c
Modified: trunk/netsurf/riscos/window.c
URL: http://svn.semichrome.net/trunk/netsurf/riscos/window.c?rev=2938&r1=2937&...
==============================================================================
--- trunk/netsurf/riscos/window.c (original)
+++ trunk/netsurf/riscos/window.c Sat Sep 9 23:07:08 2006
@@ -1381,7 +1381,7 @@
void gui_window_set_scale(struct gui_window *g, float scale)
{
struct content *c;
-
+
if (g->option.scale == scale)
return;
g->option.scale = scale;
@@ -1846,7 +1846,7 @@
/* second resize updates to the new URL bar width */
ro_gui_url_complete_resize(g, open);
}
-
+
/* set the new scale from a ctrl-resize. this must be done at the end as
* it may cause a frameset recalculation based on the new window size. */
if (new_scale > 0)
@@ -2282,7 +2282,7 @@
char *toolbar_url;
os_error *error;
wimp_pointer pointer;
- float old_scale;
+ float scale;
wchar_t c = (wchar_t)key->c;
/* Find gui window */
@@ -2520,36 +2520,38 @@
case 23: /* CTRL+W (Zoom in) */
if (!content)
break;
- old_scale = g->option.scale;
+ scale = g->option.scale;
if (ro_gui_shift_pressed() && c == 17)
- g->option.scale = ((int) (10 * g->option.scale -
- 1)) / 10.0;
+ scale = g->option.scale - 0.1;
else if (ro_gui_shift_pressed() && c == 23)
- g->option.scale = ((int) (10 * g->option.scale +
- 1)) / 10.0;
+ scale = g->option.scale + 0.1;
else if (c == 17) {
- for (int i = SCALE_SNAP_TO_SIZE - 1; i >= 0; i--)
- if (scale_snap_to[i] < old_scale) {
- g->option.scale = scale_snap_to[i];
+ for (int i = SCALE_SNAP_TO_SIZE - 1;
+ i >= 0; i--)
+ if (scale_snap_to[i] <
+ g->option.scale) {
+ scale = scale_snap_to[i];
break;
}
} else {
- for (unsigned int i = 0; i < SCALE_SNAP_TO_SIZE; i++)
- if (scale_snap_to[i] > old_scale) {
- g->option.scale = scale_snap_to[i];
+ for (unsigned int i = 0;
+ i < SCALE_SNAP_TO_SIZE; i++)
+ if (scale_snap_to[i] >
+ g->option.scale) {
+ scale = scale_snap_to[i];
break;
}
}
- if (g->option.scale < scale_snap_to[0])
- g->option.scale = scale_snap_to[0];
- if (g->option.scale > scale_snap_to[SCALE_SNAP_TO_SIZE - 1])
- g->option.scale =
- scale_snap_to[SCALE_SNAP_TO_SIZE - 1];
- if (old_scale != g->option.scale) {
- g->reformat_pending = true;
- if ((content) && (content->type != CONTENT_HTML))
- browser_window_update(g->bw, false);
- gui_reformat_pending = true;
+ if (scale < scale_snap_to[0])
+ scale = scale_snap_to[0];
+ if (scale > scale_snap_to[SCALE_SNAP_TO_SIZE - 1])
+ scale = scale_snap_to[SCALE_SNAP_TO_SIZE - 1];
+ if (g->option.scale != scale) {
+ browser_window_set_scale(g->bw, scale, true);
+// g->reformat_pending = true;
+// if ((content) && (content->type != CONTENT_HTML))
+// browser_window_update(g->bw, false);
+// gui_reformat_pending = true;
}
return true;
16 years, 8 months
r2937 rjw - /trunk/netsurf/riscos/window.c
by netsurf@semichrome.net
Author: rjw
Date: Fri Sep 8 23:36:09 2006
New Revision: 2937
URL: http://svn.semichrome.net?rev=2937&view=rev
Log:
Don't scale windows without content.
Modified:
trunk/netsurf/riscos/window.c
Modified: trunk/netsurf/riscos/window.c
URL: http://svn.semichrome.net/trunk/netsurf/riscos/window.c?rev=2937&r1=2936&...
==============================================================================
--- trunk/netsurf/riscos/window.c (original)
+++ trunk/netsurf/riscos/window.c Fri Sep 8 23:36:09 2006
@@ -752,7 +752,6 @@
wimp_window_state state;
os_error *error;
int px0, py1;
- int toolbar_height = 0;
struct browser_window *bw;
struct browser_window *parent;
struct browser_window *top;
@@ -786,10 +785,8 @@
warn_user("WimpError", error->errmess);
return;
}
- if (top->window->toolbar)
- toolbar_height = ro_gui_theme_toolbar_full_height(top->window->toolbar);
px0 = state.visible.x0 - state.xscroll;
- py1 = state.visible.y1 - state.yscroll - toolbar_height;
+ py1 = state.visible.y1 - state.yscroll;
/* get our current window state */
state.w = g->window;
@@ -1388,11 +1385,14 @@
if (g->option.scale == scale)
return;
g->option.scale = scale;
- g->reformat_pending = true;
c = g->bw->current_content;
- if ((c) && (c->type != CONTENT_HTML))
+ if (c) {
+ /* todo: we should only call _update for contents that don't have a
+ * reformat function and thus don't redraw themselves */
browser_window_update(g->bw, false);
- gui_reformat_pending = true;
+ g->reformat_pending = true;
+ gui_reformat_pending = true;
+ }
}
16 years, 8 months
r2936 rjw - /trunk/netsurf/riscos/window.c
by netsurf@semichrome.net
Author: rjw
Date: Fri Sep 8 21:50:07 2006
New Revision: 2936
URL: http://svn.semichrome.net?rev=2936&view=rev
Log:
Take scrollbars into account when placing frames.
Modified:
trunk/netsurf/riscos/window.c
Modified: trunk/netsurf/riscos/window.c
URL: http://svn.semichrome.net/trunk/netsurf/riscos/window.c?rev=2936&r1=2935&...
==============================================================================
--- trunk/netsurf/riscos/window.c (original)
+++ trunk/netsurf/riscos/window.c Fri Sep 8 21:50:07 2006
@@ -788,8 +788,8 @@
}
if (top->window->toolbar)
toolbar_height = ro_gui_theme_toolbar_full_height(top->window->toolbar);
- px0 = state.visible.x0;
- py1 = state.visible.y1 - toolbar_height;
+ px0 = state.visible.x0 - state.xscroll;
+ py1 = state.visible.y1 - state.yscroll - toolbar_height;
/* get our current window state */
state.w = g->window;
@@ -892,12 +892,8 @@
g->old_height = -1;
/* scroll on toolbar height change */
- if (g->toolbar) {
- scroll = ro_gui_theme_height_change(g->toolbar);
- state.yscroll -= scroll;
- if (state.yscroll < 0)
- state.yscroll = 0;
- }
+ if (g->toolbar)
+ state.yscroll -= ro_gui_theme_height_change(g->toolbar);
/* only allow a further reformat if we've gained/lost scrollbars */
flags = state.flags & (wimp_WINDOW_HSCROLL | wimp_WINDOW_VSCROLL);
@@ -1749,7 +1745,7 @@
((fheight > size) ||
(g->bw->browser_window_type == BROWSER_WINDOW_NORMAL)) &&
((content && width < content->width * 2 * g->option.scale) ||
- (g->bw->scrolling == SCROLLING_YES))) {
+ (g->bw->browser_window_type == BROWSER_WINDOW_NORMAL))) {
if (!(state.flags & wimp_WINDOW_HSCROLL)) {
height -= size;
state.visible.y0 += size;
16 years, 8 months
r2935 rjw - /trunk/netsurf/desktop/browser.c
by netsurf@semichrome.net
Author: rjw
Date: Fri Sep 8 21:19:08 2006
New Revision: 2935
URL: http://svn.semichrome.net?rev=2935&view=rev
Log:
Stop iframes from all getting the same content.
Modified:
trunk/netsurf/desktop/browser.c
Modified: trunk/netsurf/desktop/browser.c
URL: http://svn.semichrome.net/trunk/netsurf/desktop/browser.c?rev=2935&r1=293...
==============================================================================
--- trunk/netsurf/desktop/browser.c (original)
+++ trunk/netsurf/desktop/browser.c Fri Sep 8 21:19:08 2006
@@ -243,8 +243,8 @@
index = 0;
for (cur = iframe; cur; cur = cur->next) {
window = &(bw->iframes[index++]);
- if (iframe->url)
- browser_window_go(window, iframe->url, NULL, true);
+ if (cur->url)
+ browser_window_go(window, cur->url, NULL, true);
}
}
16 years, 8 months
r2934 rjw - /trunk/netsurf/desktop/browser.c
by netsurf@semichrome.net
Author: rjw
Date: Fri Sep 8 18:18:44 2006
New Revision: 2934
URL: http://svn.semichrome.net?rev=2934&view=rev
Log:
Trigger frame recalculation on child frame scale change.
Modified:
trunk/netsurf/desktop/browser.c
Modified: trunk/netsurf/desktop/browser.c
URL: http://svn.semichrome.net/trunk/netsurf/desktop/browser.c?rev=2934&r1=293...
==============================================================================
--- trunk/netsurf/desktop/browser.c (original)
+++ trunk/netsurf/desktop/browser.c Fri Sep 8 18:18:44 2006
@@ -555,7 +555,10 @@
void browser_window_set_scale(struct browser_window *bw, float scale, bool all) {
while (bw->parent && all)
bw = bw->parent;
- browser_window_set_scale_internal(bw, scale);
+ browser_window_set_scale_internal(bw, scale);
+ if (bw->parent)
+ bw = bw->parent;
+ browser_window_recalculate_frameset(bw);
}
void browser_window_set_scale_internal(struct browser_window *bw, float scale) {
@@ -567,8 +570,6 @@
browser_window_set_scale_internal(&bw->children[i], scale);
for (i = 0; i < bw->iframe_count; i++)
browser_window_set_scale_internal(&bw->iframes[i], scale);
- if (bw->children)
- browser_window_recalculate_frameset(bw);
}
16 years, 8 months
r2933 rjw - /trunk/netsurf/gtk/gtk_window.c
by netsurf@semichrome.net
Author: rjw
Date: Fri Sep 8 18:11:01 2006
New Revision: 2933
URL: http://svn.semichrome.net?rev=2933&view=rev
Log:
Possibly fix the GTK build and implement frameset scaling.
Modified:
trunk/netsurf/gtk/gtk_window.c
Modified: trunk/netsurf/gtk/gtk_window.c
URL: http://svn.semichrome.net/trunk/netsurf/gtk/gtk_window.c?rev=2933&r1=2932...
==============================================================================
--- trunk/netsurf/gtk/gtk_window.c (original)
+++ trunk/netsurf/gtk/gtk_window.c Fri Sep 8 18:11:01 2006
@@ -128,7 +128,6 @@
gpointer);
static void nsgtk_attach_menu_handlers(GladeXML *, gpointer);
-static void nsgtk_window_change_scale(struct gui_window *, float);
#define MENUEVENT(x) { #x, G_CALLBACK(nsgtk_on_##x##_activate) }
#define MENUPROTO(x) static gboolean nsgtk_on_##x##_activate( \
@@ -560,39 +559,23 @@
return TRUE;
}
-void nsgtk_window_change_scale(struct gui_window *g, float scale)
-{
- g->scale = scale;
-
- if (g->bw->current_content != NULL)
- gui_window_update_extent(g);
-
- gtk_widget_queue_draw(GTK_WIDGET(g->drawing_area));
-}
-
MENUHANDLER(zoom_in)
{
- struct gui_window *gw = g;
-
- nsgtk_window_change_scale(gw, gw->scale + 0.05);
+ browser_window_set_scale(g->bw, g->scale + 0.05, true);
return TRUE;
}
MENUHANDLER(normal_size)
{
- struct gui_window *gw = g;
-
- nsgtk_window_change_scale(gw, 1.00);
+ browser_window_set_scale(g->bw, 1.0, true);
return TRUE;
}
MENUHANDLER(zoom_out)
{
- struct gui_window *gw = g;
-
- nsgtk_window_change_scale(gw, gw->scale - 0.05);
+ browser_window_set_scale(g->bw, g->scale - 0.05, true);
return TRUE;
}
@@ -965,6 +948,24 @@
}
+float gui_window_get_scale(struct gui_window *g)
+{
+ return g->scale;
+}
+
+void gui_window_set_scale(struct gui_window *g, float scale)
+{
+ if (g->scale == scale)
+ return;
+ g->scale = scale;
+
+ if (g->bw->current_content != NULL)
+ gui_window_update_extent(g);
+
+ gtk_widget_queue_draw(GTK_WIDGET(g->drawing_area));
+
+}
+
void gui_window_update_extent(struct gui_window *g)
{
if (!g->bw->current_content)
16 years, 8 months
r2932 rjw - in /trunk/netsurf: !NetSurf/Resources/de/ !NetSurf/Resources/en/ !NetSurf/Resources/fr/ !NetSurf/Resources/nl/ desktop/ riscos/
by netsurf@semichrome.net
Author: rjw
Date: Fri Sep 8 17:57:26 2006
New Revision: 2932
URL: http://svn.semichrome.net?rev=2932&view=rev
Log:
Fix 1553282.
Modified:
trunk/netsurf/!NetSurf/Resources/de/Templates,fec
trunk/netsurf/!NetSurf/Resources/en/Templates,fec
trunk/netsurf/!NetSurf/Resources/fr/Templates,fec
trunk/netsurf/!NetSurf/Resources/nl/Templates,fec
trunk/netsurf/desktop/browser.c
trunk/netsurf/desktop/browser.h
trunk/netsurf/desktop/gui.h
trunk/netsurf/riscos/dialog.c
trunk/netsurf/riscos/gui.h
trunk/netsurf/riscos/window.c
Modified: trunk/netsurf/!NetSurf/Resources/de/Templates,fec
URL: http://svn.semichrome.net/trunk/netsurf/%21NetSurf/Resources/de/Templates...
==============================================================================
Binary files - no diff available.
Modified: trunk/netsurf/!NetSurf/Resources/en/Templates,fec
URL: http://svn.semichrome.net/trunk/netsurf/%21NetSurf/Resources/en/Templates...
==============================================================================
Binary files - no diff available.
Modified: trunk/netsurf/!NetSurf/Resources/fr/Templates,fec
URL: http://svn.semichrome.net/trunk/netsurf/%21NetSurf/Resources/fr/Templates...
==============================================================================
Binary files - no diff available.
Modified: trunk/netsurf/!NetSurf/Resources/nl/Templates,fec
URL: http://svn.semichrome.net/trunk/netsurf/%21NetSurf/Resources/nl/Templates...
==============================================================================
Binary files - no diff available.
Modified: trunk/netsurf/desktop/browser.c
URL: http://svn.semichrome.net/trunk/netsurf/desktop/browser.c?rev=2932&r1=293...
==============================================================================
--- trunk/netsurf/desktop/browser.c (original)
+++ trunk/netsurf/desktop/browser.c Fri Sep 8 17:57:26 2006
@@ -60,6 +60,7 @@
/** fake content for <a> being saved as a link */
struct content browser_window_href_content;
+static void browser_window_set_scale_internal(struct browser_window *bw, float scale);
static void browser_window_resize_frame(struct browser_window *bw, int x, int y);
static bool browser_window_resolve_frame_dimension(struct browser_window *bw,
struct browser_window *sibling, int x, int y, bool width, bool height);
@@ -405,7 +406,8 @@
switch (window->frame_width.unit) {
case FRAME_DIMENSION_PIXELS:
- widths[col][row] = window->frame_width.value;
+ widths[col][row] = window->frame_width.value *
+ gui_window_get_scale(window->window);
if (window->border) {
if (col != 0)
widths[col][row] += 1;
@@ -466,7 +468,8 @@
switch (window->frame_height.unit) {
case FRAME_DIMENSION_PIXELS:
- heights[col][row] = window->frame_height.value;
+ heights[col][row] = window->frame_height.value *
+ gui_window_get_scale(window->window);
if (window->border) {
if (row != 0)
heights[col][row] += 1;
@@ -539,6 +542,33 @@
browser_window_recalculate_frameset(window);
}
}
+}
+
+
+/**
+ * Sets the scale of a browser window
+ *
+ * \param bw The browser window to scale
+ * \param scale The new scale
+ * \param all Scale all windows in the tree (ie work up aswell as down)
+ */
+void browser_window_set_scale(struct browser_window *bw, float scale, bool all) {
+ while (bw->parent && all)
+ bw = bw->parent;
+ browser_window_set_scale_internal(bw, scale);
+}
+
+void browser_window_set_scale_internal(struct browser_window *bw, float scale) {
+ int i;
+
+ gui_window_set_scale(bw->window, scale);
+
+ for (i = 0; i < (bw->cols * bw->rows); i++)
+ browser_window_set_scale_internal(&bw->children[i], scale);
+ for (i = 0; i < bw->iframe_count; i++)
+ browser_window_set_scale_internal(&bw->iframes[i], scale);
+ if (bw->children)
+ browser_window_recalculate_frameset(bw);
}
Modified: trunk/netsurf/desktop/browser.h
URL: http://svn.semichrome.net/trunk/netsurf/desktop/browser.h?rev=2932&r1=293...
==============================================================================
--- trunk/netsurf/desktop/browser.h (original)
+++ trunk/netsurf/desktop/browser.h Fri Sep 8 17:57:26 2006
@@ -199,6 +199,7 @@
void browser_window_create_frameset(struct browser_window *bw,
struct content_html_frames *frameset);
void browser_window_recalculate_frameset(struct browser_window *bw);
+void browser_window_set_scale(struct browser_window *bw, float scale, bool all);
void browser_window_mouse_click(struct browser_window *bw,
browser_mouse_state mouse, int x, int y);
Modified: trunk/netsurf/desktop/gui.h
URL: http://svn.semichrome.net/trunk/netsurf/desktop/gui.h?rev=2932&r1=2931&r2...
==============================================================================
--- trunk/netsurf/desktop/gui.h (original)
+++ trunk/netsurf/desktop/gui.h Fri Sep 8 17:57:26 2006
@@ -84,6 +84,8 @@
int x0, int y0, int x1, int y1);
bool gui_window_frame_resize_start(struct gui_window *g);
void gui_window_save_as_link(struct gui_window *g, struct content *c);
+float gui_window_get_scale(struct gui_window *g);
+void gui_window_set_scale(struct gui_window *g, float scale);
struct gui_download_window *gui_download_window_create(const char *url,
const char *mime_type, struct fetch *fetch,
Modified: trunk/netsurf/riscos/dialog.c
URL: http://svn.semichrome.net/trunk/netsurf/riscos/dialog.c?rev=2932&r1=2931&...
==============================================================================
--- trunk/netsurf/riscos/dialog.c (original)
+++ trunk/netsurf/riscos/dialog.c Fri Sep 8 17:57:26 2006
@@ -40,6 +40,13 @@
#include "netsurf/utils/url.h"
#include "netsurf/utils/utils.h"
+#define ICON_ZOOM_VALUE 1
+#define ICON_ZOOM_DEC 2
+#define ICON_ZOOM_INC 3
+#define ICON_ZOOM_FRAMES 5
+#define ICON_ZOOM_CANCEL 7
+#define ICON_ZOOM_OK 8
+
/* The maximum number of persistent dialogues
*/
#define MAX_PERSISTENT 64
@@ -66,7 +73,6 @@
static bool ro_gui_dialog_openurl_apply(wimp_w w);
-static bool ro_gui_dialog_zoom_click(wimp_pointer *pointer);
static bool ro_gui_dialog_zoom_apply(wimp_w w);
/**
@@ -193,8 +199,7 @@
dialog_zoom = ro_gui_dialog_create("zoom");
ro_gui_wimp_event_register_numeric_field(dialog_zoom, ICON_ZOOM_VALUE,
ICON_ZOOM_INC, ICON_ZOOM_DEC, 10, 1600, 10, 0);
- ro_gui_wimp_event_register_mouse_click(dialog_zoom,
- ro_gui_dialog_zoom_click);
+ ro_gui_wimp_event_register_checkbox(dialog_zoom, ICON_ZOOM_FRAMES);
ro_gui_wimp_event_register_cancel(dialog_zoom, ICON_ZOOM_CANCEL);
ro_gui_wimp_event_register_ok(dialog_zoom, ICON_ZOOM_OK,
ro_gui_dialog_zoom_apply);
@@ -654,39 +659,13 @@
options_write("<NetSurf$ChoicesSave>");
}
-
-/**
- * Handle clicks in the Scale view dialog.
- */
-
-bool ro_gui_dialog_zoom_click(wimp_pointer *pointer)
-{
- switch (pointer->i) {
- case ICON_ZOOM_75:
- ro_gui_set_icon_integer(dialog_zoom,
- ICON_ZOOM_VALUE, 75);
- return true;
- case ICON_ZOOM_100:
- ro_gui_set_icon_integer(dialog_zoom,
- ICON_ZOOM_VALUE, 100);
- return true;
- case ICON_ZOOM_150:
- ro_gui_set_icon_integer(dialog_zoom,
- ICON_ZOOM_VALUE, 150);
- return true;
- case ICON_ZOOM_200:
- ro_gui_set_icon_integer(dialog_zoom,
- ICON_ZOOM_VALUE, 200);
- return true;
- }
- return false;
-}
-
bool ro_gui_dialog_zoom_apply(wimp_w w) {
unsigned int scale;
+ bool all;
scale = atoi(ro_gui_get_icon_string(w, ICON_ZOOM_VALUE));
- ro_gui_window_set_scale(ro_gui_current_zoom_gui, scale * 0.01);
+ all = ro_gui_get_icon_selected_state(w, ICON_ZOOM_FRAMES);
+ browser_window_set_scale(ro_gui_current_zoom_gui->bw, scale * 0.01, all);
return true;
}
@@ -700,7 +679,9 @@
char scale_buffer[8];
sprintf(scale_buffer, "%.0f", g->option.scale * 100);
ro_gui_set_icon_string(dialog_zoom, ICON_ZOOM_VALUE, scale_buffer);
-
+ ro_gui_set_icon_selected_state(dialog_zoom, ICON_ZOOM_FRAMES, true);
+ ro_gui_set_icon_shaded_state(dialog_zoom, ICON_ZOOM_FRAMES,
+ !(g->bw->parent));
ro_gui_current_zoom_gui = g;
ro_gui_wimp_event_memorise(dialog_zoom);
}
Modified: trunk/netsurf/riscos/gui.h
URL: http://svn.semichrome.net/trunk/netsurf/riscos/gui.h?rev=2932&r1=2931&r2=...
==============================================================================
--- trunk/netsurf/riscos/gui.h (original)
+++ trunk/netsurf/riscos/gui.h Fri Sep 8 17:57:26 2006
@@ -158,7 +158,6 @@
bool ro_gui_ctrl_pressed(void);
void ro_gui_window_scroll_end(struct gui_window *g, wimp_dragged *drag);
void ro_gui_window_frame_resize_end(struct gui_window *g, wimp_dragged *drag);
-void ro_gui_window_set_scale(struct gui_window *g, float scale);
void ro_gui_window_iconise(struct gui_window *g,
wimp_full_message_window_info *wi);
bool ro_gui_window_navigate_up(struct gui_window *g, const char *url);
@@ -222,16 +221,6 @@
#define ICON_STATUS_RESIZE 0
#define ICON_STATUS_TEXT 1
-#define ICON_ZOOM_VALUE 1
-#define ICON_ZOOM_DEC 2
-#define ICON_ZOOM_INC 3
-#define ICON_ZOOM_75 5
-#define ICON_ZOOM_100 6
-#define ICON_ZOOM_150 7
-#define ICON_ZOOM_200 8
-#define ICON_ZOOM_CANCEL 9
-#define ICON_ZOOM_OK 10
-
#define ICON_SAVE_ICON 0
#define ICON_SAVE_PATH 1
#define ICON_SAVE_OK 2
Modified: trunk/netsurf/riscos/window.c
URL: http://svn.semichrome.net/trunk/netsurf/riscos/window.c?rev=2932&r1=2931&...
==============================================================================
--- trunk/netsurf/riscos/window.c (original)
+++ trunk/netsurf/riscos/window.c Fri Sep 8 17:57:26 2006
@@ -1350,6 +1350,57 @@
/**
+ * Save the specified content as a link.
+ *
+ * \param g gui_window containing the content
+ * \param c the content to save
+ */
+
+void gui_window_save_as_link(struct gui_window *g, struct content *c)
+{
+ if (!c)
+ return;
+ ro_gui_save_prepare(GUI_SAVE_LINK_URL, c);
+ ro_gui_dialog_open_persistent(g->window, dialog_saveas, true);
+}
+
+
+/**
+ * Get the scale setting of a window
+ *
+ * \param g gui window
+ * \return scale value (1.0 == normal scale)
+ */
+
+float gui_window_get_scale(struct gui_window *g)
+{
+ return g->option.scale;
+}
+
+
+/**
+ * Set the scale setting of a window
+ *
+ * \param g gui window
+ * \param scale scale value (1.0 == normal scale)
+ */
+
+void gui_window_set_scale(struct gui_window *g, float scale)
+{
+ struct content *c;
+
+ if (g->option.scale == scale)
+ return;
+ g->option.scale = scale;
+ g->reformat_pending = true;
+ c = g->bw->current_content;
+ if ((c) && (c->type != CONTENT_HTML))
+ browser_window_update(g->bw, false);
+ gui_reformat_pending = true;
+}
+
+
+/**
* Redraws the content for all windows.
*/
@@ -1635,16 +1686,14 @@
struct gui_window *g = (struct gui_window *)ro_gui_wimp_event_get_user_data(open->w);
int width = open->visible.x1 - open->visible.x0;
int height = open->visible.y1 - open->visible.y0;
- int toolbar_height = 0;
+ int size, fheight, fwidth, toolbar_height = 0;
+ bool no_vscroll, no_hscroll;
+ float new_scale = 0;
struct content *content;
wimp_window_state state;
os_error *error;
- int key_down = 0;
wimp_w parent;
bits linkage;
- int size;
- bool no_vscroll, no_hscroll;
- int fheight, fwidth;
if (open->next == wimp_TOP && g->iconise_icon >= 0) {
/* window is no longer iconised, release its sprite number */
@@ -1759,15 +1808,13 @@
/* change extent if necessary */
if (g->old_width != width || g->old_height != height) {
if (content) {
- if (g->old_width != width) {
- xosbyte1(osbyte_SCAN_KEYBOARD, 1 ^ 0x80, 0, &key_down);
- if (key_down)
- g->option.scale = (g->option.scale * width) / g->old_width;
- };
+ /* Ctrl-resize of a top-level window scales the content size */
+ if ((g->old_width > 0) && (g->old_width != width) && (!g->bw->parent) &&
+ (ro_gui_ctrl_pressed()))
+ new_scale = (g->option.scale * width) / g->old_width;
g->reformat_pending = true;
gui_reformat_pending = true;
}
-
g->old_width = width;
g->old_height = height;
@@ -1797,11 +1844,17 @@
return;
}
+ /* update the toolbar */
if (g->toolbar) {
ro_gui_theme_process_toolbar(g->toolbar, -1);
/* second resize updates to the new URL bar width */
ro_gui_url_complete_resize(g, open);
}
+
+ /* set the new scale from a ctrl-resize. this must be done at the end as
+ * it may cause a frameset recalculation based on the new window size. */
+ if (new_scale > 0)
+ browser_window_set_scale(g->bw, new_scale, true);
}
@@ -3063,22 +3116,6 @@
/**
- * Save the specified content as a link.
- *
- * \param g gui_window containing the content
- * \param c the content to save
- */
-
-void gui_window_save_as_link(struct gui_window *g, struct content *c)
-{
- if (!c)
- return;
- ro_gui_save_prepare(GUI_SAVE_LINK_URL, c);
- ro_gui_dialog_open_persistent(g->window, dialog_saveas, true);
-}
-
-
-/**
* Completes resizing of a browser frame
*
* \param g gui window
@@ -3089,26 +3126,6 @@
/* our clean-up is the same as for page scrolling */
ro_gui_window_scroll_end(g, drag);
}
-
-
-/**
- * Alter the scale setting of a window
- *
- * \param g gui window
- * \param scale scale value (1.0 == normal scale)
- */
-
-void ro_gui_window_set_scale(struct gui_window *g, float scale)
-{
- struct content *c;
- g->option.scale = scale;
- g->reformat_pending = true;
- c = g->bw->current_content;
- if ((c) && (c->type != CONTENT_HTML))
- browser_window_update(g->bw, false);
- gui_reformat_pending = true;
-}
-
/**
* Import text file into window or its toolbar
16 years, 8 months