r9568 MarkieB - in /branches/MarkieB/gtkmain: !NetSurf/Resources/
!NetSurf/Resources/de/ !NetSurf/Resources/en/ !NetSurf/Resources/fr/
!NetSurf/Resources/it/ !NetSurf/Resources/nl/ ./ Docs/ideas/ amiga/
amiga/dist/ amiga/pkg/ amiga/resources/Themes/AISS/
amiga/resources/Themes/Default/ content/ css/ render/ utils/
netsurf at semichrome.net
netsurf at semichrome.net
Sun Sep 13 14:46:59 BST 2009
Author: MarkieB
Date: Sun Sep 13 08:46:59 2009
New Revision: 9568
URL: http://source.netsurf-browser.org?rev=9568&view=rev
Log:
merge / resolve recent changes to trunk
Added:
branches/MarkieB/gtkmain/Docs/ideas/cache.txt
- copied unchanged from r9564, trunk/netsurf/Docs/ideas/cache.txt
Modified:
branches/MarkieB/gtkmain/ (props changed)
branches/MarkieB/gtkmain/!NetSurf/Resources/CSS,f79
branches/MarkieB/gtkmain/!NetSurf/Resources/de/Messages
branches/MarkieB/gtkmain/!NetSurf/Resources/en/Messages
branches/MarkieB/gtkmain/!NetSurf/Resources/fr/Messages
branches/MarkieB/gtkmain/!NetSurf/Resources/it/Messages
branches/MarkieB/gtkmain/!NetSurf/Resources/nl/Messages
branches/MarkieB/gtkmain/amiga/bitmap.c
branches/MarkieB/gtkmain/amiga/dist/Install
branches/MarkieB/gtkmain/amiga/dist/NetSurf.guide
branches/MarkieB/gtkmain/amiga/dist/netsurf.readme
branches/MarkieB/gtkmain/amiga/font.c
branches/MarkieB/gtkmain/amiga/gui.c
branches/MarkieB/gtkmain/amiga/gui.h
branches/MarkieB/gtkmain/amiga/history_local.c
branches/MarkieB/gtkmain/amiga/history_local.h
branches/MarkieB/gtkmain/amiga/menu.c
branches/MarkieB/gtkmain/amiga/menu.h
branches/MarkieB/gtkmain/amiga/pkg/makepackage
branches/MarkieB/gtkmain/amiga/plotters.c
branches/MarkieB/gtkmain/amiga/plotters.h
branches/MarkieB/gtkmain/amiga/print.c
branches/MarkieB/gtkmain/amiga/print.h
branches/MarkieB/gtkmain/amiga/resources/Themes/AISS/Theme
branches/MarkieB/gtkmain/amiga/resources/Themes/Default/Theme
branches/MarkieB/gtkmain/amiga/thumbnail.c
branches/MarkieB/gtkmain/content/content.c
branches/MarkieB/gtkmain/css/select.c
branches/MarkieB/gtkmain/render/layout.c
branches/MarkieB/gtkmain/utils/memdebug.c
Propchange: branches/MarkieB/gtkmain/
------------------------------------------------------------------------------
--- svnmerge-integrated (original)
+++ svnmerge-integrated Sun Sep 13 08:46:59 2009
@@ -1,1 +1,1 @@
-/trunk/netsurf:1-9429 /branches/vince/netsurf-fb:1-5422
+/branches/vince/netsurf-fb:1-5422 /trunk/netsurf:1-9567
Modified: branches/MarkieB/gtkmain/!NetSurf/Resources/CSS,f79
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/%21NetSurf/Resources/CSS%2Cf79?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/!NetSurf/Resources/CSS,f79 (original)
+++ branches/MarkieB/gtkmain/!NetSurf/Resources/CSS,f79 Sun Sep 13 08:46:59 2009
@@ -69,6 +69,8 @@
menu { display: block; padding-left: 1.5em; margin: 1.12em 0; }
table { display: table; border-spacing: 2px; }
+
+table[border], table[border] td, table[border] tr { border-color: grey; }
caption { display: table-caption; }
Modified: branches/MarkieB/gtkmain/!NetSurf/Resources/de/Messages
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/%21NetSurf/Resources/de/Messages?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/!NetSurf/Resources/de/Messages (original)
+++ branches/MarkieB/gtkmain/!NetSurf/Resources/de/Messages Sun Sep 13 08:46:59 2009
@@ -264,6 +264,9 @@
HistLocalNS:Show local history...
FindTextNS:Find text...
Redraw:Redraw page
+ScaleInc:Increase
+ScaleDec:Decrease
+ScaleNorm:Normal
# Hotlist menu
#
@@ -549,6 +552,9 @@
PrintSheetFilled:Druckseite
PrintSheetsFilled:Druckseiten
+Printer:Printer
+Copies:Copies
+Printing:Printing page
# Find text user interface tokens
@@ -706,7 +712,7 @@
AWNotSeen:Please locate the AWViewer application and try again.
# Error messages for Amiga version only
-NoMode:No matching mode in screens database
+CompError:Unable to open
# Queries
# =======
Modified: branches/MarkieB/gtkmain/!NetSurf/Resources/en/Messages
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/%21NetSurf/Resources/en/Messages?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/!NetSurf/Resources/en/Messages (original)
+++ branches/MarkieB/gtkmain/!NetSurf/Resources/en/Messages Sun Sep 13 08:46:59 2009
@@ -264,6 +264,9 @@
HistLocalNS:Show local history...
FindTextNS:Find text...
Redraw:Redraw page
+ScaleInc:Increase
+ScaleDec:Decrease
+ScaleNorm:Normal
# Hotlist menu
#
@@ -552,6 +555,9 @@
PrintSheetFilled:sheet is filled
PrintSheetsFilled:sheets are filled
+Printer:Printer
+Copies:Copies
+Printing:Printing page
# Find text user interface tokens
@@ -709,7 +715,7 @@
DirectoryError:directory '%s' already exists
# Error messages for Amiga version only
-NoMode:No matching mode in screens database
+CompError:Unable to open
# Queries
# =======
Modified: branches/MarkieB/gtkmain/!NetSurf/Resources/fr/Messages
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/%21NetSurf/Resources/fr/Messages?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/!NetSurf/Resources/fr/Messages (original)
+++ branches/MarkieB/gtkmain/!NetSurf/Resources/fr/Messages Sun Sep 13 08:46:59 2009
@@ -264,6 +264,9 @@
HistLocalNS:Show local history...
FindTextNS:Find text...
Redraw:Redraw page
+ScaleInc:Increase
+ScaleDec:Decrease
+ScaleNorm:Normal
# Hotlist menu
#
@@ -549,6 +552,9 @@
PrintSheetFilled:feuille remplie
PrintSheetsFilled:feuilles remplies
+Printer:Printer
+Copies:Copies
+Printing:Printing page
# Find text user interface tokens
@@ -706,7 +712,7 @@
AWNotSeen:Localisez l'application AMViewer SVP puis réessayez.
# Error messages for Amiga version only
-NoMode:No matching mode in screens database
+CompError:Unable to open
# Queries
# =======
Modified: branches/MarkieB/gtkmain/!NetSurf/Resources/it/Messages
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/%21NetSurf/Resources/it/Messages?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/!NetSurf/Resources/it/Messages (original)
+++ branches/MarkieB/gtkmain/!NetSurf/Resources/it/Messages Sun Sep 13 08:46:59 2009
@@ -266,6 +266,9 @@
HistLocalNS:Mostra cronologia locale...
FindTextNS:Trova testo...
Redraw:Ridisegna pagina
+ScaleInc:Increase
+ScaleDec:Decrease
+ScaleNorm:Normal
# Hotlist menu
#
@@ -555,6 +558,9 @@
PrintSheetFilled:Il foglio stampato è pieno
PrintSheetsFilled:I fogli stampati sono pieni
+Printer:Printer
+Copies:Copies
+Printing:Printing page
# Find text user interface tokens
@@ -712,7 +718,7 @@
EncNotRec:Tipo di codifica sconosciuta.
# Error messages for Amiga version only
-NoMode:Questa modalità non coincide nel database degli schermi
+CompError:Unable to open
# Queries
# =======
Modified: branches/MarkieB/gtkmain/!NetSurf/Resources/nl/Messages
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/%21NetSurf/Resources/nl/Messages?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/!NetSurf/Resources/nl/Messages (original)
+++ branches/MarkieB/gtkmain/!NetSurf/Resources/nl/Messages Sun Sep 13 08:46:59 2009
@@ -264,6 +264,9 @@
HistLocalNS:Show local history...
FindTextNS:Find text...
Redraw:Redraw page
+ScaleInc:Increase
+ScaleDec:Decrease
+ScaleNorm:Normal
# Hotlist menu
#
@@ -549,6 +552,9 @@
PrintSheetFilled:pagina
PrintSheetsFilled:pagina's
+Printer:Printer
+Copies:Copies
+Printing:Printing page
# Find text user interface tokens
@@ -706,7 +712,7 @@
AWNotSeen:Please locate the AWViewer application and try again.
# Error messages for Amiga version only
-NoMode:No matching mode in screens database
+CompError:Unable to open
# Queries
# =======
Modified: branches/MarkieB/gtkmain/amiga/bitmap.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/bitmap.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/bitmap.c (original)
+++ branches/MarkieB/gtkmain/amiga/bitmap.c Sun Sep 13 08:46:59 2009
@@ -364,9 +364,9 @@
if(GfxBase->lib_Version >= 53) // AutoDoc says v52, but this function isn't in OS4.0, so checking for v53 (OS4.1)
{
uint32 comptype = COMPOSITE_Src;
- uint32 flags = COMPFLAG_IgnoreDestAlpha;
-
- if(!bitmap->opaque) comptype = COMPOSITE_Src_Over_Dest;
+ uint32 flags = 0;
+
+ if(bitmap->opaque) flags |= COMPFLAG_IgnoreDestAlpha;
if(option_scale_quality) flags |= COMPFLAG_SrcFilter;
CompositeTags(comptype,tbm,scaledbm,
Modified: branches/MarkieB/gtkmain/amiga/dist/Install
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/dist/Install?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/dist/Install (original)
+++ branches/MarkieB/gtkmain/amiga/dist/Install Sun Sep 13 08:46:59 2009
@@ -320,7 +320,7 @@
)
)
-(complete 40)
+(complete 30)
(copyfiles
(prompt "Copying files")
@@ -332,7 +332,7 @@
; (all)
)
-(set #complete 50)
+(set #complete 40)
(if (= #cairo-version 1)
(
Modified: branches/MarkieB/gtkmain/amiga/dist/NetSurf.guide
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/dist/NetSurf.guide?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/dist/NetSurf.guide (original)
+++ branches/MarkieB/gtkmain/amiga/dist/NetSurf.guide Sun Sep 13 08:46:59 2009
@@ -37,6 +37,8 @@
@{b}kiosk_mode@{ub} No gadgets
@{b}no_iframes@{ub} Disable IFrames
+@{b}printer_unit@{ub} Specifies which printer.device unit to print to
+
@{b}url_file@{ub} Path to URL database file
@{b}hotlist_file@{ub} Path to Hotlist file
@{b}arexx_dir@{ub} Path to ARexx scripts dir
Modified: branches/MarkieB/gtkmain/amiga/dist/netsurf.readme
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/dist/netsurf.readme?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/dist/netsurf.readme (original)
+++ branches/MarkieB/gtkmain/amiga/dist/netsurf.readme Sun Sep 13 08:46:59 2009
@@ -2,16 +2,17 @@
Uploader: chris at unsatisfactorysoftware.co.uk (Chris Young)
Author: NetSurf contributors (OS4 port by Chris Young)
Type: comm/www
-Version: 2.0 development (SVN 5911)
+Version: 3.0 development (SVN 9560)
Architecture: ppc-amigaos >= 4.0.0
-This is a preview release of the OS4 native port of NetSurf.
+MANUAL INSTALL ONLY - INTENTIONALLY NOT AVAILABLE VIA AMIUPDATE
+
+This is a preview release of NetSurf 3.0 for AmigaOS 4.
It is beta software, which means it is unstable and missing
features - use at your own risk!
-This is provided for testing purposes only, to gain feedback
-in order to fix bugs for the real release and to prioritise
-features.
+This is provided for testing purposes only. For the latest
+stable version, visit http://www.netsurf-browser.org
Please report bugs to chris at unsatisfactorysoftware.co.uk,
on the Amigans.net forums or in the bug tracker at
Modified: branches/MarkieB/gtkmain/amiga/font.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/font.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/font.c (original)
+++ branches/MarkieB/gtkmain/amiga/font.c Sun Sep 13 08:46:59 2009
@@ -97,6 +97,7 @@
size_t len,utf8len;
uint8 *utf8;
uint32 co = 0;
+ int utf16charlen;
len = utf8_bounded_length(string, length);
if(utf8_to_enc(string,"UTF-16",length,(char **)&utf16) != UTF8_CONVERT_OK) return false;
@@ -108,6 +109,14 @@
for(i=0;i<len;i++)
{
+ if (*utf16 < 0xD800 || 0xDFFF < *utf16)
+ utf16charlen = 1;
+ else
+ utf16charlen = 2;
+
+ utf8len = utf8_char_byte_length(string);
+ string += utf8len;
+
if(ESetInfo(&ofont->olf_EEngine,
OT_GlyphCode,*utf16,
TAG_END) == OTERR_Success)
@@ -116,12 +125,9 @@
OT_GlyphMap8Bit,&glyph,
TAG_END) == 0)
{
- if(utf8_from_enc((char *)utf16,"UTF-16",2,(char **)&utf8) != UTF8_CONVERT_OK) return false;
- utf8len = utf8_char_byte_length(utf8);
- free(utf8);
-
- if(x<tx+glyph->glm_X1)
+ if(x < (tx + glyph->glm_X1))
{
+ *actual_x = tx;
i = len+1;
}
else
@@ -129,21 +135,24 @@
co += utf8len;
}
- *actual_x = tx + (glyph->glm_X1 / 2);
- tx+= glyph->glm_X1;
+ tx += glyph->glm_X1;
EReleaseInfo(&ofont->olf_EEngine,
OT_GlyphMap8Bit,glyph,
TAG_END);
}
}
- if (*utf16 < 0xD800 || 0xDFFF < *utf16)
- utf16++;
- else
- utf16 += 2;
- }
+ utf16 += utf16charlen;
+ }
+
+ if(co == length)
+ {
+ *actual_x = tx;
+ co = length;
+ }
+
*char_offset = co;
- if(co>=length) *actual_x = tx;
+
free(outf16);
return true;
@@ -172,13 +181,14 @@
{
struct TextExtent extent;
ULONG co;
- char *charp;
+ char *ostr = string;
struct TextFont *tfont;
uint16 *utf16 = NULL,*outf16 = NULL;
struct OutlineFont *ofont;
struct GlyphMap *glyph;
uint32 tx=0,i=0;
size_t len;
+ int utf8len, utf8clen = 0;
len = utf8_bounded_length(string, length);
if(utf8_to_enc((char *)string,"UTF-16",length,(char **)&utf16) != UTF8_CONVERT_OK) return false;
@@ -186,9 +196,12 @@
if(!(ofont = ami_open_outline_font(fstyle))) return false;
*char_offset = 0;
+ *actual_x = 0;
for(i=0;i<len;i++)
{
+ utf8len = utf8_char_byte_length(string+utf8clen);
+
if(ESetInfo(&ofont->olf_EEngine,
OT_GlyphCode,*utf16,
TAG_END) == OTERR_Success)
@@ -197,37 +210,35 @@
OT_GlyphMap8Bit,&glyph,
TAG_END) == 0)
{
- if(*utf16 == 0x0020)
- {
- *actual_x = tx;
- co = i;
- }
-
- if(x<tx+glyph->glm_X1)
+ tx+= glyph->glm_X1;
+
+ if(x < tx)
{
i = length+1;
}
-
- tx+= glyph->glm_X1;
+ else
+ {
+ if(string[utf8clen] == ' ') //*utf16 == 0x0020)
+ {
+ *actual_x = tx;
+ *char_offset = utf8clen;
+ }
+ }
EReleaseInfo(&ofont->olf_EEngine,
OT_GlyphMap8Bit,glyph,
TAG_END);
}
}
+
if (*utf16 < 0xD800 || 0xDFFF < *utf16)
- utf16++;
+ utf16 += 1;
else
utf16 += 2;
- }
-
- charp = (char *)(string+co);
- while(((*charp != ' ')) && (charp > string))
- {
- charp--;
- co--;
- }
- *char_offset = co;
+
+ utf8clen += utf8len;
+ }
+
free(outf16);
return true;
@@ -269,7 +280,7 @@
}
/* Scale to 16.16 fixed point */
- ysize = fstyle->size * ((1 << 16) / FONT_SIZE_SCALE);
+ ysize = fstyle->size * ((1 << 16) / FONT_SIZE_SCALE) * glob->scale;
if(ESetInfo(&ofont->olf_EEngine,
OT_DeviceDPI,(72<<16) | 72,
Modified: branches/MarkieB/gtkmain/amiga/gui.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/gui.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/gui.c (original)
+++ branches/MarkieB/gtkmain/amiga/gui.c Sun Sep 13 08:46:59 2009
@@ -77,6 +77,7 @@
#include <graphics/blitattr.h>
#include "amiga/gui_options.h"
#include "amiga/bitmap.h"
+#include "amiga/print.h"
#include "amiga/stringview/stringview.h"
#include "amiga/stringview/urlhistory.h"
@@ -133,6 +134,7 @@
static Object *mouseptrobj[AMI_LASTPOINTER+1];
static struct BitMap *mouseptrbm[AMI_LASTPOINTER+1];
static int mouseptrcurrent=0;
+static struct DrawInfo *dri;
char *ptrs[AMI_LASTPOINTER+1] = {
"ptr_default",
@@ -187,6 +189,10 @@
void ami_init_mouse_pointers(void);
void ami_switch_tab(struct gui_window_2 *gwin,bool redraw);
static void *myrealloc(void *ptr, size_t len, void *pw);
+void ami_get_hscroll_pos(struct gui_window_2 *gwin, ULONG *xs);
+void ami_get_vscroll_pos(struct gui_window_2 *gwin, ULONG *ys);
+ULONG ami_set_border_gadget_balance(struct gui_window_2 *gwin);
+ULONG ami_get_border_gadget_balance(struct gui_window_2 *gwin, ULONG *size1, ULONG *size2);
STRPTR ami_locale_langs(void)
{
@@ -258,6 +264,8 @@
ASO_NoTrack,FALSE,
TAG_DONE))) die(messages_get("NoMemory"));
+ ami_print_init();
+
if(PopupMenuBase = OpenLibrary("popupmenu.class",0))
{
IPopupMenu = (struct PopupMenuIFace *)GetInterface(PopupMenuBase,"main",1,NULL);
@@ -573,6 +581,7 @@
scrn = LockPubScreen("Workbench");
}
}
+ dri = GetScreenDrawInfo(scrn);
}
void gui_init2(int argc, char** argv)
@@ -695,6 +704,11 @@
{
gwin->key_state |= BROWSER_MOUSE_MOD_2;
}
+
+ if((quals & IEQUALIFIER_LALT) || (quals & IEQUALIFIER_RALT))
+ {
+ gwin->key_state |= BROWSER_MOUSE_MOD_3;
+ }
}
void ami_handle_msg(void)
@@ -805,14 +819,14 @@
case WMHI_MOUSEMOVE:
GetAttr(SPACE_AreaBox,gwin->gadgets[GID_BROWSER],(ULONG *)&bbox);
- GetAttr(SCROLLER_Top,gwin->objects[OID_HSCROLL],(ULONG *)&xs);
- x = gwin->win->MouseX - bbox->Left +xs; // mousex should be in intuimessage
-
- GetAttr(SCROLLER_Top,gwin->objects[OID_VSCROLL],(ULONG *)&ys);
- y = gwin->win->MouseY - bbox->Top + ys;
-
- x /= gwin->bw->scale;
- y /= gwin->bw->scale;
+ x = (ULONG)((gwin->win->MouseX - bbox->Left) / gwin->bw->scale);
+ y = (ULONG)((gwin->win->MouseY - bbox->Top) / gwin->bw->scale);
+
+ ami_get_hscroll_pos(gwin, (ULONG *)&xs);
+ ami_get_vscroll_pos(gwin, (ULONG *)&ys);
+
+ x += xs;
+ y += ys;
width=bbox->Width;
height=bbox->Height;
@@ -855,14 +869,16 @@
break;
case WMHI_MOUSEBUTTONS:
- GetAttr(SPACE_AreaBox,gwin->gadgets[GID_BROWSER],(ULONG *)&bbox);
- GetAttr(SCROLLER_Top,gwin->objects[OID_HSCROLL],(ULONG *)&xs);
- x = gwin->win->MouseX - bbox->Left +xs;
- GetAttr(SCROLLER_Top,gwin->objects[OID_VSCROLL],(ULONG *)&ys);
- y = gwin->win->MouseY - bbox->Top + ys;
-
- x /= gwin->bw->scale;
- y /= gwin->bw->scale;
+ GetAttr(SPACE_AreaBox,gwin->gadgets[GID_BROWSER],(ULONG *)&bbox);
+
+ x = (ULONG)((gwin->win->MouseX - bbox->Left) / gwin->bw->scale);
+ y = (ULONG)((gwin->win->MouseY - bbox->Top) / gwin->bw->scale);
+
+ ami_get_hscroll_pos(gwin, (ULONG *)&xs);
+ ami_get_vscroll_pos(gwin, (ULONG *)&ys);
+
+ x += xs;
+ y += ys;
width=bbox->Width;
height=bbox->Height;
@@ -929,7 +945,7 @@
break;
case WMHI_GADGETUP:
- switch(result & WMHI_GADGETMASK) //gadaddr->GadgetID) //result & WMHI_GADGETMASK)
+ switch(result & WMHI_GADGETMASK)
{
case GID_TABS:
ami_switch_tab(gwin,true);
@@ -1153,6 +1169,7 @@
switch(node->Type)
{
case AMINS_WINDOW:
+ ami_set_border_gadget_balance(gwin);
ami_update_throbber(gwin,true);
// fall through
case AMINS_FRAME:
@@ -1234,7 +1251,7 @@
if(gwin->redraw_required)
ami_do_redraw(gwin);
- if(gwin->throbber_frame)
+ if(gwin->bw->window->throbbing)
ami_update_throbber(gwin,false);
if(gwin->bw->window->c_h)
@@ -1281,10 +1298,10 @@
{
GetAttr(SPACE_AreaBox,gwin->gadgets[GID_BROWSER],(ULONG *)&bbox);
- GetAttr(SCROLLER_Top,gwin->objects[OID_HSCROLL],(ULONG *)&xs);
+ ami_get_hscroll_pos(gwin, (ULONG *)&xs);
x = (appmsg->am_MouseX) - (bbox->Left) +xs;
- GetAttr(SCROLLER_Top,gwin->objects[OID_VSCROLL],(ULONG *)&ys);
+ ami_get_vscroll_pos(gwin, (ULONG *)&ys);
y = appmsg->am_MouseY - bbox->Top + ys;
width=bbox->Width;
@@ -1394,9 +1411,11 @@
ULONG winsignal = 1L << sport->mp_SigBit;
ULONG appsig = 1L << appport->mp_SigBit;
ULONG schedulesig = 1L << msgport->mp_SigBit;
- ULONG signalmask = winsignal | appsig | schedulesig | rxsig;
ULONG signal;
struct Message *timermsg = NULL;
+ struct MsgPort *printmsgport = ami_print_get_msgport();
+ ULONG printsig = 1L << printmsgport->mp_SigBit;
+ ULONG signalmask = winsignal | appsig | schedulesig | rxsig | printsig;
signal = Wait(signalmask);
@@ -1411,6 +1430,11 @@
else if(signal & rxsig)
{
ami_arexx_handle();
+ }
+ else if(signal & printsig)
+ {
+ while(GetMsg(printmsgport)); //ReplyMsg
+ ami_print_cont();
}
else if(signal & schedulesig)
{
@@ -1457,6 +1481,7 @@
void ami_switch_tab(struct gui_window_2 *gwin,bool redraw)
{
struct Node *tabnode;
+ struct IBox *bbox;
if(gwin->tabs == 0) return;
@@ -1467,13 +1492,19 @@
TNA_UserData,&gwin->bw,
TAG_DONE);
curbw = gwin->bw;
+ GetAttr(SPACE_AreaBox,gwin->gadgets[GID_BROWSER],(ULONG *)&bbox);
+
+ if(!gwin->bw->current_content)
+ {
+ p96RectFill(gwin->win->RPort, bbox->Left, bbox->Top,
+ bbox->Width+bbox->Left, bbox->Height+bbox->Top, 0xffffffff);
+ return;
+ }
ami_update_buttons(gwin);
if(redraw)
{
- struct IBox *bbox;
- GetAttr(SPACE_AreaBox,gwin->gadgets[GID_BROWSER],(ULONG *)&bbox);
p96RectFill(gwin->win->RPort,bbox->Left,bbox->Top,bbox->Width+bbox->Left,bbox->Height+bbox->Top,0xffffffff);
browser_window_update(gwin->bw,false);
@@ -1540,6 +1571,7 @@
ami_arexx_cleanup();
ami_free_layers(&browserglob);
+ FreeScreenDrawInfo(scrn, dri);
ami_close_fonts();
@@ -1569,6 +1601,7 @@
}
ami_clipboard_free();
+ ami_print_free();
FreeSysObject(ASOT_PORT,appport);
FreeSysObject(ASOT_PORT,sport);
@@ -1617,14 +1650,18 @@
if(!browser_window_reload_available(gwin->bw))
reload=TRUE;
- if(gwin->tabs <= 1)
- {
- tabclose=TRUE;
- OffMenu(gwin->win,AMI_MENU_CLOSETAB);
- }
- else
- {
- OnMenu(gwin->win,AMI_MENU_CLOSETAB);
+ if(gwin->bw->browser_window_type == BROWSER_WINDOW_NORMAL &&
+ option_kiosk_mode == false)
+ {
+ if(gwin->tabs <= 1)
+ {
+ tabclose=TRUE;
+ OffMenu(gwin->win,AMI_MENU_CLOSETAB);
+ }
+ else
+ {
+ OnMenu(gwin->win,AMI_MENU_CLOSETAB);
+ }
}
RefreshSetGadgetAttrs(gwin->gadgets[GID_BACK],gwin->win,NULL,
@@ -1675,6 +1712,7 @@
char reload[100],reload_s[100],reload_g[100];
char home[100],home_s[100],home_g[100];
char closetab[100],closetab_s[100],closetab_g[100];
+ char tabthrobber[100];
if((bw->browser_window_type == BROWSER_WINDOW_IFRAME) && option_no_iframes) return NULL;
@@ -1738,7 +1776,8 @@
TAG_DONE);
}
- RethinkLayout(gwin->shared->gadgets[GID_TABLAYOUT],gwin->shared->win,NULL,TRUE);
+ if(ClickTabBase->lib_Version < 53)
+ RethinkLayout(gwin->shared->gadgets[GID_TABLAYOUT],gwin->shared->win,NULL,TRUE);
gwin->shared->tabs++;
gwin->shared->next_tab++;
@@ -1853,6 +1892,7 @@
ami_get_theme_filename(closetab,"theme_closetab");
ami_get_theme_filename(closetab_s,"theme_closetab_s");
ami_get_theme_filename(closetab_g,"theme_closetab_g");
+ ami_get_theme_filename(tabthrobber,"theme_tab_loading");
gwin->shared->objects[OID_MAIN] = WindowObject,
WA_ScreenTitle,nsscreentitle,
@@ -1869,19 +1909,21 @@
WA_CustomScreen,scrn,
WA_ReportMouse,TRUE,
WA_SmartRefresh,TRUE,
+ WA_SizeBBottom, TRUE,
WA_IDCMP,IDCMP_MENUPICK | IDCMP_MOUSEMOVE |
IDCMP_MOUSEBUTTONS | IDCMP_NEWSIZE |
IDCMP_RAWKEY | IDCMP_SIZEVERIFY |
IDCMP_GADGETUP | IDCMP_IDCMPUPDATE |
IDCMP_INTUITICKS | IDCMP_ACTIVEWINDOW |
- IDCMP_EXTENDEDMOUSE,
+ IDCMP_EXTENDEDMOUSE | IDCMP_GADGETDOWN,
// WINDOW_IconifyGadget, TRUE,
WINDOW_NewMenu,menu,
- WINDOW_HorizProp,1,
+ // WINDOW_HorizProp,1,
WINDOW_VertProp,1,
WINDOW_IDCMPHook,&gwin->shared->scrollerhook,
WINDOW_IDCMPHookBits,IDCMP_IDCMPUPDATE |
- IDCMP_EXTENDEDMOUSE | IDCMP_SIZEVERIFY,
+ IDCMP_EXTENDEDMOUSE | IDCMP_SIZEVERIFY |
+ IDCMP_GADGETDOWN,
WINDOW_AppPort, appport,
WINDOW_AppWindow,TRUE,
WINDOW_SharedPort,sport,
@@ -2013,6 +2055,11 @@
GA_Underscore,13, // disable kb shortcuts
CLICKTAB_Labels,&gwin->shared->tab_list,
CLICKTAB_LabelTruncate,TRUE,
+ CLICKTAB_FlagImage, BitMapObject,
+ BITMAP_SourceFile, tabthrobber,
+ BITMAP_Screen,scrn,
+ BITMAP_Masking,TRUE,
+ BitMapEnd,
ClickTabEnd,
CHILD_CacheDomain,FALSE,
LayoutEnd,
@@ -2021,11 +2068,6 @@
GA_ID,GID_BROWSER,
SPACE_Transparent,TRUE,
SpaceEnd,
- LAYOUT_AddChild, gwin->shared->gadgets[GID_STATUS] = StringObject,
- GA_ID,GID_STATUS,
- GA_ReadOnly,TRUE,
- StringEnd,
- CHILD_WeightedHeight,0,
EndGroup,
EndWindow;
}
@@ -2087,22 +2129,71 @@
return NULL;
}
+ GetAttr(WINDOW_VertObject, gwin->shared->objects[OID_MAIN],
+ (ULONG *)&gwin->shared->objects[OID_VSCROLL]);
+
+ RefreshSetGadgetAttrs((APTR)gwin->shared->objects[OID_VSCROLL],
+ gwin->shared->win, NULL,
+ GA_ID, OID_VSCROLL,
+ ICA_TARGET, ICTARGET_IDCMP,
+ TAG_DONE);
+
+ if(bw->browser_window_type == BROWSER_WINDOW_NORMAL &&
+ option_kiosk_mode == false)
+ {
+ ULONG sz, size1, size2;
+
+ sz = ami_get_border_gadget_balance(gwin->shared,
+ (ULONG *)&size1, (ULONG *)&size2);
+
+ gwin->shared->gadgets[GID_HSCROLL] = (struct Gadget *)NewObject(
+ NULL,
+ "scrollergclass",
+ GA_ID, GID_HSCROLL,
+ PGA_Freedom, FREEHORIZ,
+ // GA_Left, size1,
+ GA_RelRight, 1 - size2 - sz,
+ GA_Width, size2,
+ GA_BottomBorder, TRUE,
+ GA_Immediate, TRUE,
+ ICA_TARGET, ICTARGET_IDCMP,
+ GA_DrawInfo, dri,
+ TAG_DONE);
+
+ GetAttr(GA_Height, gwin->shared->gadgets[GID_HSCROLL],
+ (ULONG *)&sz);
+
+ gwin->shared->gadgets[GID_STATUS] = (struct Gadget *)NewObject(
+ NULL,
+ "frbuttonclass",
+ GA_ID, GID_STATUS,
+ GA_Left, scrn->WBorLeft,
+ GA_RelBottom, -((1 + sz + scrn->WBorBottom - scrn->RastPort.TxHeight)/2),
+ GA_Width, size1,
+ GA_DrawInfo, dri,
+ GA_BottomBorder, TRUE,
+ GA_Next, gwin->shared->gadgets[GID_HSCROLL],
+ TAG_DONE);
+
+ AddGList(gwin->shared->win, gwin->shared->gadgets[GID_STATUS],
+ (UWORD)~0, -1, NULL);
+
+ RefreshGadgets((APTR)gwin->shared->gadgets[GID_STATUS],
+ gwin->shared->win, NULL);
+ }
+ else
+ {
+ GetAttr(WINDOW_HorizObject, gwin->shared->objects[OID_MAIN],
+ (ULONG *)&gwin->shared->objects[OID_HSCROLL]);
+
+ RefreshSetGadgetAttrs((APTR)gwin->shared->objects[OID_HSCROLL],
+ gwin->shared->win, NULL,
+ GA_ID, OID_HSCROLL,
+ ICA_TARGET, ICTARGET_IDCMP,
+ TAG_DONE);
+ }
+
gwin->shared->bw = bw;
-
- GetAttr(WINDOW_HorizObject,gwin->shared->objects[OID_MAIN],(ULONG *)&gwin->shared->objects[OID_HSCROLL]);
- GetAttr(WINDOW_VertObject,gwin->shared->objects[OID_MAIN],(ULONG *)&gwin->shared->objects[OID_VSCROLL]);
-
-
- RefreshSetGadgetAttrs((APTR)gwin->shared->objects[OID_VSCROLL],gwin->shared->win,NULL,
- GA_ID,OID_VSCROLL,
- ICA_TARGET,ICTARGET_IDCMP,
- TAG_DONE);
-
- RefreshSetGadgetAttrs((APTR)gwin->shared->objects[OID_HSCROLL],gwin->shared->win,NULL,
- GA_ID,OID_HSCROLL,
- ICA_TARGET,ICTARGET_IDCMP,
- TAG_DONE);
-
curbw = bw;
gwin->shared->node = AddObject(window_list,AMINS_WINDOW);
@@ -2111,6 +2202,51 @@
glob = &browserglob;
return gwin;
+}
+
+ULONG ami_set_border_gadget_balance(struct gui_window_2 *gwin)
+{
+ /* Reset gadget widths according to new calculation */
+ ULONG size1, size2, sz;
+
+ sz = ami_get_border_gadget_balance(gwin, &size1, &size2);
+
+ RefreshSetGadgetAttrs((APTR)gwin->gadgets[GID_HSCROLL],
+ gwin->win, NULL,
+ // GA_Left, size1,
+ GA_RelRight, - size2 - sz,
+ GA_Width, size2,
+ TAG_DONE);
+
+ RefreshSetGadgetAttrs((APTR)gwin->gadgets[GID_STATUS],
+ gwin->win, NULL,
+ GA_Width, size1,
+ TAG_DONE);
+
+ RefreshWindowFrame(gwin->win);
+}
+
+ULONG ami_get_border_gadget_balance(struct gui_window_2 *gwin, ULONG *size1, ULONG *size2)
+{
+ /* Get the sizes that border gadget 1 (status) and 2 (hscroller) need to be.
+ ** Returns the width of the vertical scroller (right-hand window border) as
+ ** a convenience.
+ */
+
+ ULONG sz;
+ ULONG available_width;
+ float gad1percent;
+
+ GetAttr(GA_Width, gwin->objects[OID_VSCROLL], (ULONG *)&sz);
+
+ available_width = gwin->win->Width - scrn->WBorLeft - sz;
+
+ gad1percent = option_toolbar_status_width / 10000.0;
+
+ *size1 = (ULONG)available_width * gad1percent;
+ *size2 = (ULONG)available_width * (1 - gad1percent);
+
+ return sz;
}
void ami_close_all_tabs(struct gui_window_2 *gwin)
@@ -2174,7 +2310,9 @@
CLICKTAB_Labels,&g->shared->tab_list,
CLICKTAB_Current,ptabnum,
TAG_DONE);
- RethinkLayout(g->shared->gadgets[GID_TABLAYOUT],g->shared->win,NULL,TRUE);
+
+ if(ClickTabBase->lib_Version < 53)
+ RethinkLayout(g->shared->gadgets[GID_TABLAYOUT],g->shared->win,NULL,TRUE);
g->shared->tabs--;
ami_switch_tab(g->shared,true);
@@ -2186,6 +2324,7 @@
DisposeObject(g->shared->objects[OID_MAIN]);
+ ami_utf8_free(g->shared->status);
FreeVec(g->shared->svbuffer);
DelObject(g->shared->node);
@@ -2226,7 +2365,9 @@
RefreshSetGadgetAttrs(g->shared->gadgets[GID_TABS],g->shared->win,NULL,
CLICKTAB_Labels,&g->shared->tab_list,
TAG_DONE);
- RethinkLayout(g->shared->gadgets[GID_TABLAYOUT],g->shared->win,NULL,TRUE);
+
+ if(ClickTabBase->lib_Version < 53)
+ RethinkLayout(g->shared->gadgets[GID_TABLAYOUT],g->shared->win,NULL,TRUE);
GetAttr(CLICKTAB_Current,g->shared->gadgets[GID_TABS],(ULONG *)&cur_tab);
}
@@ -2274,12 +2415,21 @@
current_redraw_browser = g->shared->bw;
- width=bbox->Width;
- height=bbox->Height;
+ width=bbox->Width / g->shared->bw->scale;
+ height=bbox->Height / g->shared->bw->scale;
xoffset=bbox->Left;
yoffset=bbox->Top;
+/* x0 *= g->shared->bw->scale;
+ x1 *= g->shared->bw->scale;
+ y0 *= g->shared->bw->scale;
+ y1 *= g->shared->bw->scale;
+
+ sx *= g->shared->bw->scale;
+ sy *= g->shared->bw->scale;
+*/
plot=amiplot;
+ glob = &browserglob;
if((y1<sy) || (y0>sy+height)) return;
if((x1<sx) || (x0>sx+width)) return;
@@ -2290,16 +2440,16 @@
if((x1-x0)+(xoffset+x0-sx)>(width)) x1 = (width-(x0-sx)+x0);
if((y1-y0)+(yoffset+y0-sy)>(height)) y1 = (height-(y0-sy)+y0);
- content_redraw(c,
- -sx,-sy,width-sx,height-sy,
- floorf((x0 *
- g->shared->bw->scale)-sx),
- ceilf((y0 *
- g->shared->bw->scale)-sy),
- (x1 *
- g->shared->bw->scale)-sx,
- (y1 *
- g->shared->bw->scale)-sy,
+ glob->scale = g->shared->bw->scale;
+
+ content_redraw(c,
+ -sx, -sy,
+ width - sx,
+ height - sy,
+ (x0 - sx) * g->shared->bw->scale,
+ (y0 - sy) * g->shared->bw->scale,
+ (x1 - sx) * g->shared->bw->scale,
+ (y1 - sy) * g->shared->bw->scale,
g->shared->bw->scale,
0xFFFFFF);
@@ -2307,8 +2457,15 @@
ami_clearclipreg(&browserglob);
- BltBitMapRastPort(browserglob.bm,x0-sx,y0-sy,g->shared->win->RPort,
- xoffset+x0-sx,yoffset+y0-sy,x1-x0,y1-y0,0x0C0);
+ BltBitMapRastPort(browserglob.bm,
+ (x0 - sx) * g->shared->bw->scale,
+ (y0 - sy) * g->shared->bw->scale,
+ g->shared->win->RPort,
+ xoffset + ((x0 - sx) * g->shared->bw->scale),
+ yoffset + ((y0 - sy) * g->shared->bw->scale),
+ (x1 - x0) * g->shared->bw->scale,
+ (y1 - y0) * g->shared->bw->scale,
+ 0x0C0);
}
void gui_window_redraw(struct gui_window *g, int x0, int y0, int x1, int y1)
@@ -2317,8 +2474,8 @@
struct content *c;
c = g->shared->bw->current_content;
- GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)&sx);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)&sy);
+ ami_get_hscroll_pos(g->shared, (ULONG *)&sx);
+ ami_get_vscroll_pos(g->shared, (ULONG *)&sy);
ami_do_redraw_limits(g,c,x0,y0,x1,y1,sx,sy);
}
@@ -2342,8 +2499,8 @@
if(!g) return;
- GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)&sx);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)&sy);
+ ami_get_hscroll_pos(g->shared, (ULONG *)&sx);
+ ami_get_vscroll_pos(g->shared, (ULONG *)&sy);
ami_do_redraw_limits(g,g->shared->bw->current_content,
data->redraw.x,data->redraw.y,
@@ -2363,8 +2520,8 @@
bool morescroll = false;
GetAttr(SPACE_AreaBox,g->gadgets[GID_BROWSER],(ULONG *)&bbox);
- GetAttr(SCROLLER_Top,g->objects[OID_HSCROLL],(ULONG *)&hcurrent);
- GetAttr(SCROLLER_Top,g->objects[OID_VSCROLL],(ULONG *)&vcurrent);
+ ami_get_hscroll_pos(g, (ULONG *)&hcurrent);
+ ami_get_vscroll_pos(g, (ULONG *)&vcurrent);
c = g->bw->current_content;
@@ -2379,6 +2536,7 @@
xoffset=bbox->Left;
yoffset=bbox->Top;
plot = amiplot;
+ glob = &browserglob;
if(g->bw->reformat_pending)
{
@@ -2404,46 +2562,57 @@
if(vcurrent>oldv)
{
- ami_do_redraw_limits(g->bw->window,c,hcurrent,height+oldv,
- hcurrent+width,vcurrent+height,hcurrent,vcurrent);
+ ami_do_redraw_limits(g->bw->window, c,
+ hcurrent, (height / g->bw->scale) + oldv,
+ hcurrent + (width / g->bw->scale),
+ vcurrent + (height / g->bw->scale),
+ hcurrent, vcurrent);
}
else if(vcurrent<oldv)
{
- ami_do_redraw_limits(g->bw->window,c,hcurrent,vcurrent,
- hcurrent+width,oldv,hcurrent,vcurrent);
+ ami_do_redraw_limits(g->bw->window, c,
+ hcurrent, vcurrent,
+ hcurrent + (width / g->bw->scale),
+ oldv, hcurrent, vcurrent);
}
if(hcurrent>oldh)
{
- ami_do_redraw_limits(g->bw->window,c,width+oldh,vcurrent,
- hcurrent+width,vcurrent+height,hcurrent,vcurrent);
+ ami_do_redraw_limits(g->bw->window, c,
+ (width / g->bw->scale) + oldh, vcurrent,
+ hcurrent + (width / g->bw->scale),
+ vcurrent + (height / g->bw->scale),
+ hcurrent, vcurrent);
}
else if(hcurrent<oldh)
{
- ami_do_redraw_limits(g->bw->window,c,hcurrent,vcurrent,
- oldh,vcurrent+height,hcurrent,vcurrent);
+ ami_do_redraw_limits(g->bw->window, c,
+ hcurrent, vcurrent,
+ oldh, vcurrent+(height / g->bw->scale),
+ hcurrent, vcurrent);
}
}
else
{
ami_clg(0xffffff);
+ glob->scale = g->bw->scale;
if(c->type == CONTENT_HTML)
+ {
+ content_redraw(c, -hcurrent,
+ -vcurrent,
+ (width / g->bw->scale) - hcurrent,
+ (height / g->bw->scale) - vcurrent,
+ 0,0,width,
+ height,
+ g->bw->scale,0xFFFFFF);
+ }
+ else
{
content_redraw(c, -hcurrent /* * g->bw->scale */,
-vcurrent /* * g->bw->scale */,
- width-hcurrent /* * g->bw->scale */,
- height-vcurrent /* * g->bw->scale */,
- 0,0,width /* * g->bw->scale */,
- height /* * g->bw->scale */,
- g->bw->scale,0xFFFFFF);
- }
- else
- {
- content_redraw(c, -hcurrent /* * g->bw->scale */,
- -vcurrent /* * g->bw->scale */,
- width-hcurrent /* * g->bw->scale */,
- height-vcurrent /* * g->bw->scale */,
+ (width / g->bw->scale) - hcurrent,
+ (height / g->bw->scale) - vcurrent,
0,0,c->width /* * g->bw->scale */,
c->height /* * g->bw->scale */,
g->bw->scale,0xFFFFFF);
@@ -2466,10 +2635,30 @@
g->new_content = false;
}
+void ami_get_hscroll_pos(struct gui_window_2 *gwin, ULONG *xs)
+{
+ if(gwin->gadgets[GID_HSCROLL])
+ {
+ GetAttr(PGA_Top, gwin->gadgets[GID_HSCROLL], xs);
+ }
+ else if(gwin->objects[OID_HSCROLL])
+ {
+ GetAttr(SCROLLER_Top, gwin->objects[OID_HSCROLL], xs);
+ }
+
+ *xs /= gwin->bw->scale;
+}
+
+void ami_get_vscroll_pos(struct gui_window_2 *gwin, ULONG *ys)
+{
+ GetAttr(SCROLLER_Top, gwin->objects[OID_VSCROLL], ys);
+ *ys /= gwin->bw->scale;
+}
+
bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
{
- GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)sx);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)sy);
+ ami_get_hscroll_pos(g->shared, (ULONG *)sx);
+ ami_get_vscroll_pos(g->shared, (ULONG *)sy);
}
void gui_window_set_scroll(struct gui_window *g, int sx, int sy)
@@ -2487,20 +2676,30 @@
if((cur_tab == g->tab) || (g->shared->tabs == 0))
{
- RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_VSCROLL],g->shared->win,NULL,
- SCROLLER_Top,sy,
+ RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_VSCROLL],
+ g->shared->win, NULL,
+ SCROLLER_Top, (ULONG)(sy * g->shared->bw->scale),
TAG_DONE);
- RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_HSCROLL],g->shared->win,NULL,
- SCROLLER_Top,sx,
- TAG_DONE);
-
+ if(g->shared->gadgets[GID_HSCROLL])
+ {
+ RefreshSetGadgetAttrs((APTR)g->shared->gadgets[GID_HSCROLL],
+ g->shared->win, NULL,
+ PGA_Top, (ULONG)(sx * g->shared->bw->scale),
+ TAG_DONE);
+ }
+ else if(g->shared->objects[OID_HSCROLL])
+ {
+ RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_HSCROLL],
+ g->shared->win, NULL,
+ SCROLLER_Top, (ULONG)(sx * g->shared->bw->scale),
+ TAG_DONE);
+ }
g->shared->redraw_required = true;
if(option_faster_scroll) g->shared->redraw_scroll = true;
else g->shared->redraw_scroll = false;
-
g->scrollx = sx;
g->scrolly = sy;
@@ -2555,20 +2754,28 @@
{
GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox);
-/*
- printf("upd ext %ld,%ld\n",g->bw->current_content->width, // * g->bw->scale,
- g->bw->current_content->height); // * g->bw->scale);
-*/
-
RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_VSCROLL],g->shared->win,NULL,
- SCROLLER_Total,g->shared->bw->current_content->height,
- SCROLLER_Visible,bbox->Height,
+ SCROLLER_Total, (ULONG)(g->shared->bw->current_content->height * g->shared->bw->scale),
+ SCROLLER_Visible, bbox->Height,
TAG_DONE);
- RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_HSCROLL],g->shared->win,NULL,
- SCROLLER_Total,g->shared->bw->current_content->width,
- SCROLLER_Visible,bbox->Width,
- TAG_DONE);
+ if(g->shared->gadgets[GID_HSCROLL])
+ {
+ RefreshSetGadgetAttrs((APTR)g->shared->gadgets[GID_HSCROLL],
+ g->shared->win, NULL,
+ PGA_Total, (ULONG)(g->shared->bw->current_content->width * g->shared->bw->scale),
+ PGA_Visible, bbox->Width,
+ TAG_DONE);
+ }
+ else if(g->shared->objects[OID_HSCROLL])
+ {
+ RefreshSetGadgetAttrs((APTR)g->shared->objects[OID_HSCROLL],
+ g->shared->win, NULL,
+ SCROLLER_Total, (ULONG)(g->shared->bw->current_content->width * g->shared->bw->scale),
+ SCROLLER_Visible, bbox->Width,
+ TAG_DONE);
+ }
+
}
g->shared->new_content = true;
}
@@ -2576,15 +2783,30 @@
void gui_window_set_status(struct gui_window *g, const char *text)
{
ULONG cur_tab = 0;
+ char *utf8text;
if(!g) return;
if(!text) return;
+ if(!g->shared->gadgets[GID_STATUS]) return;
if(g->tab_node) GetAttr(CLICKTAB_Current,g->shared->gadgets[GID_TABS],(ULONG *)&cur_tab);
if((cur_tab == g->tab) || (g->shared->tabs == 0))
{
- RefreshSetGadgetAttrs(g->shared->gadgets[GID_STATUS],g->shared->win,NULL,STRINGA_TextVal,text,TAG_DONE);
+ utf8text = ami_utf8_easy((char *)text);
+
+ if((g->shared->status == NULL) || (strcmp(utf8text,g->shared->status)))
+ {
+ SetGadgetAttrs(g->shared->gadgets[GID_STATUS],
+ g->shared->win, NULL,
+ GA_Text, utf8text,
+ TAG_DONE);
+
+ RefreshWindowFrame(g->shared->win);
+
+ if(g->shared->status) ami_utf8_free(g->shared->status);
+ g->shared->status = utf8text;
+ }
}
}
@@ -2791,21 +3013,56 @@
void gui_window_start_throbber(struct gui_window *g)
{
struct IBox *bbox;
- GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_THROBBER],(ULONG *)&bbox);
-
- g->shared->throbber_frame=1;
-
- BltBitMapRastPort(throbber,throbber_width,0,g->shared->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0);
+ ULONG cur_tab = 0;
+
+ if(!g) return;
+
+ if(g->tab_node)
+ {
+ GetAttr(CLICKTAB_Current,g->shared->gadgets[GID_TABS],(ULONG *)&cur_tab);
+ SetClickTabNodeAttrs(g->tab_node, TNA_Flagged, TRUE, TAG_DONE);
+ RefreshGadgets((APTR)g->shared->gadgets[GID_TABS],
+ g->shared->win, NULL);
+ }
+
+ g->throbbing = true;
+
+ if((cur_tab == g->tab) || (g->shared->tabs == 0))
+ {
+ GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_THROBBER],(ULONG *)&bbox);
+
+ if(g->shared->throbber_frame == 0) g->shared->throbber_frame=1;
+
+ BltBitMapRastPort(throbber,throbber_width,0,g->shared->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0);
+ }
}
void gui_window_stop_throbber(struct gui_window *g)
{
struct IBox *bbox;
- GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_THROBBER],(ULONG *)&bbox);
-
- BltBitMapRastPort(throbber,0,0,g->shared->win->RPort,bbox->Left,bbox->Top,throbber_width,throbber_height,0x0C0);
-
- g->shared->throbber_frame = 0;
+ ULONG cur_tab = 0;
+
+ if(!g) return;
+
+ if(g->tab_node)
+ {
+ GetAttr(CLICKTAB_Current, g->shared->gadgets[GID_TABS],
+ (ULONG *)&cur_tab);
+ SetClickTabNodeAttrs(g->tab_node, TNA_Flagged, FALSE, TAG_DONE);
+ RefreshGadgets((APTR)g->shared->gadgets[GID_TABS],
+ g->shared->win, NULL);
+ }
+
+ g->throbbing = false;
+
+ if((cur_tab == g->tab) || (g->shared->tabs == 0))
+ {
+ GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_THROBBER],(ULONG *)&bbox);
+
+ BltBitMapRastPort(throbber, 0, 0, g->shared->win->RPort, bbox->Left,
+ bbox->Top, throbber_width, throbber_height, 0x0C0);
+ }
+// g->shared->throbber_frame = 0;
}
/**
@@ -2828,23 +3085,33 @@
void ami_update_throbber(struct gui_window_2 *g,bool redraw)
{
struct IBox *bbox;
-
+ int frame = g->throbber_frame;
+
+ if(!g) return;
if(!g->gadgets[GID_THROBBER]) return;
- if(!redraw)
- {
- if(g->throbber_update_count < throbber_update_interval)
- {
- g->throbber_update_count++;
- return;
- }
-
- g->throbber_update_count = 0;
-
- g->throbber_frame++;
- if(g->throbber_frame > (throbber_frames-1))
- g->throbber_frame=1;
-
+ if(g->bw->window->throbbing == false)
+ {
+ frame = 0;
+ g->throbber_frame=1;
+ }
+ else
+ {
+ if(!redraw)
+ {
+ if(g->throbber_update_count < throbber_update_interval)
+ {
+ g->throbber_update_count++;
+ return;
+ }
+
+ g->throbber_update_count = 0;
+
+ g->throbber_frame++;
+ if(g->throbber_frame > (throbber_frames-1))
+ g->throbber_frame=1;
+
+ }
}
GetAttr(SPACE_AreaBox,g->gadgets[GID_THROBBER],(ULONG *)&bbox);
@@ -2854,7 +3121,7 @@
bbox->Left+throbber_width,bbox->Top+throbber_height);
*/
- BltBitMapTags(BLITA_SrcX,throbber_width*g->throbber_frame,
+ BltBitMapTags(BLITA_SrcX, throbber_width * frame,
BLITA_SrcY,0,
BLITA_DestX,bbox->Left,
BLITA_DestY,bbox->Top,
@@ -2878,8 +3145,8 @@
gui_window_remove_caret(g);
GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],&xs);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],&ys);
+ ami_get_hscroll_pos(g->shared, (ULONG *)&xs);
+ ami_get_vscroll_pos(g->shared, (ULONG *)&ys);
SetAPen(g->shared->win->RPort,3);
@@ -2906,8 +3173,8 @@
if(!g) return;
GetAttr(SPACE_AreaBox,g->shared->gadgets[GID_BROWSER],(ULONG *)&bbox);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_HSCROLL],(ULONG *)&xs);
- GetAttr(SCROLLER_Top,g->shared->objects[OID_VSCROLL],(ULONG *)&ys);
+ ami_get_hscroll_pos(g->shared, (ULONG *)&xs);
+ ami_get_vscroll_pos(g->shared, (ULONG *)&ys);
BltBitMapRastPort(browserglob.bm,g->c_x-xs,g->c_y-ys,g->shared->win->RPort,bbox->Left+g->c_x-xs,bbox->Top+g->c_y-ys,2+1,g->c_h+1,0x0C0);
@@ -2929,8 +3196,8 @@
g->shared->oldh = 0;
g->shared->oldv = 0;
- if(g->shared->bw->browser_window_type != BROWSER_WINDOW_NORMAL)
- return;
+ if(g->shared->bw->browser_window_type != BROWSER_WINDOW_NORMAL ||
+ option_kiosk_mode == true) return;
if(c->type <= CONTENT_CSS)
{
@@ -2991,7 +3258,9 @@
void gui_window_set_scale(struct gui_window *g, float scale)
{
- printf("set scale\n");
+ browserglob.scale = scale;
+ g->shared->new_content = true;
+ g->shared->redraw_required = true;
}
void gui_create_form_select_menu(struct browser_window *bw,
@@ -3040,7 +3309,8 @@
gid = GetTagData( GA_ID, 0, msg->IAddress );
switch( gid )
- {
+ {
+ case GID_HSCROLL:
case OID_HSCROLL:
case OID_VSCROLL:
// history_set_current_scroll(gwin->bw->history,
@@ -3059,8 +3329,8 @@
wheel = (struct IntuiWheelData *)msg->IAddress;
gui_window_set_scroll(gwin->bw->window,
- gwin->bw->window->scrollx + (wheel->WheelX * 20),
- gwin->bw->window->scrolly + (wheel->WheelY * 20));
+ gwin->bw->window->scrollx + (wheel->WheelX * 50),
+ gwin->bw->window->scrolly + (wheel->WheelY * 50));
}
break;
Modified: branches/MarkieB/gtkmain/amiga/gui.h
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/gui.h?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/gui.h (original)
+++ branches/MarkieB/gtkmain/amiga/gui.h Sun Sep 13 08:46:59 2009
@@ -58,6 +58,7 @@
GID_SEARCHSTRING,
GID_SHOWALL,
GID_CASE,
+ GID_HSCROLL,
GID_LAST
};
@@ -67,7 +68,7 @@
OID_VSCROLL,
OID_HSCROLL,
OID_MENU,
- OID_LAST
+ OID_LAST
};
#define AMI_GUI_POINTER_BLANK GUI_POINTER_PROGRESS+1
@@ -100,6 +101,7 @@
bool redraw_scroll;
bool new_content;
char *svbuffer;
+ char *status;
};
struct gui_window
@@ -114,6 +116,7 @@
int scrolly;
struct history_window *hw;
struct List dllist;
+ bool throbbing;
};
void ami_get_msg(void);
Modified: branches/MarkieB/gtkmain/amiga/history_local.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/history_local.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/history_local.c (original)
+++ branches/MarkieB/gtkmain/amiga/history_local.c Sun Sep 13 08:46:59 2009
@@ -17,7 +17,7 @@
*/
/** \file
- * Browser history window (RISC OS implementation).
+ * Browser history window (AmigaOS implementation).
*
* There is only one history window, not one per browser window.
*/
@@ -82,6 +82,8 @@
{
hwindow = AllocVec(sizeof(struct history_window),MEMF_CLEAR | MEMF_PRIVATE);
+ ami_init_layers(&hwindow->gg, 0, 0);
+
hwindow->bw = bw;
history_size(history, &width, &height);
@@ -98,7 +100,7 @@
WA_SizeGadget, TRUE,
WA_CustomScreen,scrn,
WA_InnerWidth,width,
- WA_InnerHeight,height,
+ WA_InnerHeight,height + 10,
WINDOW_SharedPort,sport,
WINDOW_UserData,hwindow,
WINDOW_IconifyGadget, FALSE,
@@ -158,19 +160,18 @@
GetAttr(SCROLLER_Top,hw->objects[OID_HSCROLL],(ULONG *)&xs);
GetAttr(SCROLLER_Top,hw->objects[OID_VSCROLL],(ULONG *)&ys);
+ glob = &hw->gg;
ami_clg(0xffffff);
-// RefreshGadgets(hw->gadgets[GID_MAIN],hw->win,NULL);
-// currp = hw->win->RPort;
history_redraw_rectangle(history_current, xs, ys,
bbox->Width + xs, bbox->Height + ys, 0, 0);
-// currp = &glob.rp;
-
- ami_clearclipreg(&browserglob);
+ glob = &browserglob;
+
+ ami_clearclipreg(&hw->gg);
ami_history_update_extent(hw);
- BltBitMapRastPort(browserglob.bm, 0, 0, hw->win->RPort,
+ BltBitMapRastPort(hw->gg.bm, 0, 0, hw->win->RPort,
bbox->Left, bbox->Top, bbox->Width, bbox->Height, 0x0C0);
}
@@ -216,6 +217,7 @@
void ami_history_close(struct history_window *hw)
{
+ ami_free_layers(&hw->gg);
hw->bw->window->hw = NULL;
DisposeObject(hw->objects[OID_MAIN]);
DelObject(hw->node);
Modified: branches/MarkieB/gtkmain/amiga/history_local.h
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/history_local.h?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/history_local.h (original)
+++ branches/MarkieB/gtkmain/amiga/history_local.h Sun Sep 13 08:46:59 2009
@@ -31,6 +31,7 @@
struct browser_window *bw;
ULONG pad[4];
struct Hook scrollerhook;
+ struct gui_globals gg;
};
void ami_history_open(struct browser_window *bw, struct history *history);
Modified: branches/MarkieB/gtkmain/amiga/menu.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/menu.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/menu.c (original)
+++ branches/MarkieB/gtkmain/amiga/menu.c Sun Sep 13 08:46:59 2009
@@ -100,17 +100,20 @@
menulab[24] = ami_utf8_easy((char *)messages_get("Browser"));
menulab[25] = ami_utf8_easy((char *)messages_get("FindTextNS"));
menulab[26] = NM_BARLABEL;
- menulab[27] = ami_utf8_easy((char *)messages_get("normal"));
- menulab[28] = ami_utf8_easy((char *)messages_get("HistLocalNS"));
- menulab[29] = ami_utf8_easy((char *)messages_get("HistGlobalNS"));
- menulab[30] = NM_BARLABEL;
- menulab[31] = ami_utf8_easy((char *)messages_get("ShowCookies"));
- menulab[32] = NM_BARLABEL;
- menulab[33] = ami_utf8_easy((char *)messages_get("Redraw"));
- menulab[34] = ami_utf8_easy((char *)messages_get("Hotlist"));
- menulab[35] = ami_utf8_easy((char *)messages_get("HotlistAdd"));
- menulab[36] = ami_utf8_easy((char *)messages_get("HotlistShowNS"));
- menulab[37] = NM_BARLABEL;
+ menulab[27] = ami_utf8_easy((char *)messages_get("HistLocalNS"));
+ menulab[28] = ami_utf8_easy((char *)messages_get("HistGlobalNS"));
+ menulab[29] = NM_BARLABEL;
+ menulab[30] = ami_utf8_easy((char *)messages_get("ShowCookies"));
+ menulab[31] = NM_BARLABEL;
+ menulab[32] = ami_utf8_easy((char *)messages_get("Scale"));
+ menulab[33] = ami_utf8_easy((char *)messages_get("ScaleDec"));
+ menulab[34] = ami_utf8_easy((char *)messages_get("ScaleNorm"));
+ menulab[35] = ami_utf8_easy((char *)messages_get("ScaleInc"));
+ menulab[36] = ami_utf8_easy((char *)messages_get("Redraw"));
+ menulab[37] = ami_utf8_easy((char *)messages_get("Hotlist"));
+ menulab[38] = ami_utf8_easy((char *)messages_get("HotlistAdd"));
+ menulab[39] = ami_utf8_easy((char *)messages_get("HotlistShowNS"));
+ menulab[40] = NM_BARLABEL;
menulab[AMI_MENU_HOTLIST_MAX] = ami_utf8_easy((char *)messages_get("Settings"));
menulab[AMI_MENU_HOTLIST_MAX+1] = ami_utf8_easy((char *)messages_get("SettingsEdit"));
@@ -154,12 +157,15 @@
{NM_TITLE,0,0,0,0,0,}, // browser
{ NM_ITEM,0,"F",0,0,0,}, // find in page
{ NM_ITEM,NM_BARLABEL,0,0,0,0,},
- {NM_IGNORE,0,0,0,0,0,}, // was test option for scaling
{ NM_ITEM,0,0,0,0,0,}, // local history
{ NM_ITEM,0,0,0,0,0,}, // global history
{ NM_ITEM,NM_BARLABEL,0,0,0,0,},
{ NM_ITEM,0,0,0,0,0,}, // cookies
{ NM_ITEM,NM_BARLABEL,0,0,0,0,},
+ { NM_ITEM,0,0,0,0,0,}, // scale
+ { NM_SUB,0,"-",0,0,0,}, // decrease
+ { NM_SUB,0,"=",0,0,0,}, // normal
+ { NM_SUB,0,"+",0,0,0,}, // increase
{ NM_ITEM,0,0,0,0,0,}, // redraw
{NM_TITLE,0,0,0,0,0,}, // hotlist
{ NM_ITEM,0,0,0,0,0,}, // add to hotlist
@@ -647,19 +653,6 @@
ami_search_open(gwin->bw->window);
break;
- case 1: // size
- switch(subnum)
- {
- case 0: // normal
- gwin->bw->scale = 1.0;
- break;
-
- case 1: // double
- gwin->bw->scale = 2.0;
- break;
- }
- break;
-
case 2: // local history
if(gwin->bw && gwin->bw->history)
ami_history_open(gwin->bw, gwin->bw->history);
@@ -673,7 +666,27 @@
ami_open_tree(cookies_tree,AMI_TREE_COOKIES);
break;
- case 7: // redraw
+ case 7: // size
+ switch(subnum)
+ {
+ case 0: // decrease */
+ if(gwin->bw->scale > 0.1)
+ browser_window_set_scale(gwin->bw,
+ gwin->bw->scale - 0.1, false);
+ break;
+
+ case 1: // normal */
+ browser_window_set_scale(gwin->bw, 1.0, false);
+ break;
+
+ case 2: // increase */
+ browser_window_set_scale(gwin->bw,
+ gwin->bw->scale + 0.1, false);
+ break;
+ }
+ break;
+
+ case 8: // redraw
gwin->redraw_required = true;
gwin->new_content = true;
break;
Modified: branches/MarkieB/gtkmain/amiga/menu.h
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/menu.h?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/menu.h (original)
+++ branches/MarkieB/gtkmain/amiga/menu.h Sun Sep 13 08:46:59 2009
@@ -28,10 +28,10 @@
/* Maximum number of menu items - first value is number of static items
* (ie. everything not intially defined as NM_IGNORE) */
-#define AMI_MENU_MAX 46 + AMI_HOTLIST_ITEMS
+#define AMI_MENU_MAX 49 + AMI_HOTLIST_ITEMS
/* Where the hotlist entries start */
-#define AMI_MENU_HOTLIST 38
+#define AMI_MENU_HOTLIST 41
/* Where the hotlist entries end */
#define AMI_MENU_HOTLIST_MAX AMI_MENU_HOTLIST+AMI_HOTLIST_ITEMS
Modified: branches/MarkieB/gtkmain/amiga/pkg/makepackage
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/pkg/makepackage?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/pkg/makepackage (original)
+++ branches/MarkieB/gtkmain/amiga/pkg/makepackage Sun Sep 13 08:46:59 2009
@@ -20,6 +20,6 @@
makedir ram:NetSurf/Rexx
copy amiga/dist/Rexx/~(.svn) ram:NetSurf/Rexx/ COM
makedir ram:NetSurf/SObjs
-copy sobjs:libjpeg.so sobjs:libexpat.so sobjs:libhubbub.so.0 sobjs:libhpdf-2.2.0.so.0.0 sobjs:libmng.so.1 sobjs:liblcms.so sobjs:libxml2.so sobjs:libparserutils.so.0 sobjs:libnsgif.so.0 sobjs:libnsbmp.so.0 sobjs:libcss.so.0 sobjs:libwapcaplet.so.0 sobjs:libcurl.so ram:NetSurf/SObjs clone
+copy sobjs:libjpeg.so sobjs:libexpat.so sobjs:libhubbub.so.0 sobjs:libhpdf-2.2.0.so.0.0 sobjs:libmng.so.1 sobjs:liblcms.so sobjs:libxml2.so sobjs:libparserutils.so.0 sobjs:libnsgif.so.0 sobjs:libnsbmp.so.0 sobjs:libcss.so.0 sobjs:libwapcaplet.so.0 sobjs:libcurl.so sobjs:libsvgtiny.so.0 ram:NetSurf/SObjs clone
;sobjs:libssl-0.9.8.so
;sobjs:libgcc.so sobjs:libc.so sobjs:libpthread.so
Modified: branches/MarkieB/gtkmain/amiga/plotters.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/plotters.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/plotters.c (original)
+++ branches/MarkieB/gtkmain/amiga/plotters.c Sun Sep 13 08:46:59 2009
@@ -116,6 +116,7 @@
if(!width) width = scrn->Width;
if(!height) height = scrn->Width;
+ gg->scale = 1.0;
gg->layerinfo = NewLayerInfo();
gg->areabuf = AllocVec(100,MEMF_PRIVATE | MEMF_CLEAR);
gg->tmprasbuf = AllocVec(width*height,MEMF_PRIVATE | MEMF_CLEAR);
Modified: branches/MarkieB/gtkmain/amiga/plotters.h
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/plotters.h?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/plotters.h (original)
+++ branches/MarkieB/gtkmain/amiga/plotters.h Sun Sep 13 08:46:59 2009
@@ -33,6 +33,7 @@
APTR areabuf;
APTR tmprasbuf;
struct Rectangle rect;
+ float scale;
#ifdef NS_AMIGA_CAIRO
cairo_surface_t *surface;
cairo_t *cr;
Modified: branches/MarkieB/gtkmain/amiga/print.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/print.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/print.c (original)
+++ branches/MarkieB/gtkmain/amiga/print.c Sun Sep 13 08:46:59 2009
@@ -21,16 +21,30 @@
#include "render/font.h"
#include "amiga/gui.h"
#include "amiga/options.h"
-
-#include <proto/exec.h>
+#include "amiga/print.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+
+#include <proto/intuition.h>
#include <proto/Picasso96API.h>
#include <devices/printer.h>
#include <devices/prtbase.h>
+
+#include <proto/window.h>
+#include <proto/layout.h>
+
+#include <proto/fuelgauge.h>
+#include <classes/window.h>
+#include <gadgets/fuelgauge.h>
+#include <gadgets/layout.h>
+
+#include <reaction/reaction_macros.h>
bool ami_print_begin(struct print_settings *ps);
bool ami_print_next_page(void);
void ami_print_end(void);
bool ami_print_dump(void);
+void ami_print_progress(void);
const struct printer amiprinter = {
&amiplot,
@@ -46,18 +60,22 @@
struct PrinterData *PD;
struct PrinterExtendedData *PED;
struct MsgPort *msgport;
+ struct content *c;
+ struct print_settings *ps;
int page;
+ int pages;
+ struct Gadget *gadgets[GID_LAST];
+ struct Object *objects[OID_LAST];
+ struct Window *win;
};
struct ami_printer_info ami_print_info;
void ami_print(struct content *c)
{
- struct print_settings *ps;
-
- if(!(ami_print_info.msgport = AllocSysObjectTags(ASOT_PORT,
- ASO_NoTrack,FALSE,
- TAG_DONE))) return;
+ double height, print_height;
+
+ if(!ami_print_info.msgport) return;
if(!(ami_print_info.PReq =
(struct IODRPTagsReq *)AllocSysObjectTags(ASOT_IOREQUEST,
@@ -67,21 +85,69 @@
TAG_DONE))) return;
if(OpenDevice("printer.device", option_printer_unit,
- (struct IORequest *)ami_print_info.PReq, 0)) return;
+ (struct IORequest *)ami_print_info.PReq, 0))
+ {
+ warn_user("CompError","printer.device");
+ return;
+ }
ami_print_info.PD = (struct PrinterData *)ami_print_info.PReq->io_Device;
ami_print_info.PED = &ami_print_info.PD->pd_SegmentData->ps_PED;
- ps = print_make_settings(PRINT_DEFAULT, c->url, &nsfont);
- ps->page_width = ami_print_info.PED->ped_MaxXDots;
- ps->page_height = ami_print_info.PED->ped_MaxYDots;
- ps->scale = 1.0;
-
- print_basic_run(c, &amiprinter, ps);
-
- CloseDevice(ami_print_info.PReq);
- FreeSysObject(ASOT_IOREQUEST,ami_print_info.PReq);
+ ami_print_info.ps = print_make_settings(PRINT_DEFAULT, c->url, &nsfont);
+ ami_print_info.ps->page_width = ami_print_info.PED->ped_MaxXDots;
+ ami_print_info.ps->page_height = ami_print_info.PED->ped_MaxYDots;
+ ami_print_info.ps->scale = 1.0;
+
+ print_set_up(c, &amiprinter, ami_print_info.ps, &height);
+
+ height *= ami_print_info.ps->scale;
+ ami_print_info.pages = height / ami_print_info.ps->page_height;
+ ami_print_info.c = c;
+
+ ami_print_progress();
+
+ while(ami_print_cont()); /* remove while() for async printing */
+}
+
+bool ami_print_cont(void)
+{
+ bool ret = false;
+
+ if(ami_print_info.page <= ami_print_info.pages)
+ {
+ glob = ami_print_info.gg;
+ print_draw_next_page(&amiprinter, ami_print_info.ps);
+ ami_print_dump();
+ glob = &browserglob;
+ ret = true;
+ }
+ else
+ {
+ print_cleanup(ami_print_info.c, &amiprinter, ami_print_info.ps);
+ ret = false;
+ }
+
+ return ret;
+}
+
+struct MsgPort *ami_print_init(void)
+{
+ ami_print_info.msgport = AllocSysObjectTags(ASOT_PORT,
+ ASO_NoTrack,FALSE,
+ TAG_DONE);
+
+ return ami_print_info.msgport;
+}
+
+void ami_print_free(void)
+{
FreeSysObject(ASOT_PORT,ami_print_info.msgport);
+}
+
+struct MsgPort *ami_print_get_msgport(void)
+{
+ return ami_print_info.msgport;
}
bool ami_print_begin(struct print_settings *ps)
@@ -94,7 +160,7 @@
ami_print_info.PED->ped_MaxXDots,
ami_print_info.PED->ped_MaxYDots);
- glob = ami_print_info.gg;
+ ami_print_info.gg->scale = ps->scale;
ami_print_info.page = 0;
return true;
@@ -102,20 +168,24 @@
bool ami_print_next_page(void)
{
- bool ret = true;
-
- if(ami_print_info.page > 0) ret = ami_print_dump();
ami_print_info.page++;
- return ret;
+ RefreshSetGadgetAttrs(ami_print_info.gadgets[GID_STATUS],
+ ami_print_info.win, NULL,
+ FUELGAUGE_Level, ami_print_info.page,
+ TAG_DONE);
+ return true;
}
void ami_print_end(void)
{
- ami_print_dump();
ami_free_layers(ami_print_info.gg);
FreeVec(ami_print_info.gg);
+ DisposeObject(ami_print_info.objects[OID_MAIN]);
glob = &browserglob;
+
+ CloseDevice(ami_print_info.PReq);
+ FreeSysObject(ASOT_IOREQUEST,ami_print_info.PReq);
}
bool ami_print_dump(void)
@@ -134,7 +204,51 @@
ami_print_info.PReq->io_DestRows = ami_print_info.PED->ped_MaxYDots;
ami_print_info.PReq->io_Special = 0;
- DoIO(ami_print_info.PReq);
+ DoIO(ami_print_info.PReq); /* SendIO for async printing */
return true;
}
+
+void ami_print_progress(void)
+{
+ ami_print_info.objects[OID_MAIN] = WindowObject,
+ WA_ScreenTitle,nsscreentitle,
+ WA_Title, messages_get("Printing"),
+ WA_Activate, TRUE,
+ WA_DepthGadget, TRUE,
+ WA_DragBar, TRUE,
+ WA_CloseGadget, FALSE,
+ WA_SizeGadget, TRUE,
+ WA_CustomScreen,scrn,
+ //WINDOW_SharedPort,sport,
+ WINDOW_UserData, &ami_print_info,
+ WINDOW_IconifyGadget, FALSE,
+ WINDOW_LockHeight,TRUE,
+ WINDOW_Position, WPOS_CENTERSCREEN,
+ WINDOW_ParentGroup, ami_print_info.gadgets[GID_MAIN] = VGroupObject,
+ LAYOUT_AddChild, ami_print_info.gadgets[GID_STATUS] = FuelGaugeObject,
+ GA_ID,GID_STATUS,
+ FUELGAUGE_Min,0,
+ FUELGAUGE_Max,ami_print_info.pages,
+ FUELGAUGE_Level,0,
+ FUELGAUGE_Ticks,11,
+ FUELGAUGE_ShortTicks,TRUE,
+ FUELGAUGE_Percent,TRUE,
+ FUELGAUGE_Justification,FGJ_CENTER,
+ FuelGaugeEnd,
+ CHILD_NominalSize,TRUE,
+ CHILD_WeightedHeight,0,
+/*
+ LAYOUT_AddChild, ami_print_info.gadgets[GID_CANCEL] = ButtonObject,
+ GA_ID,GID_CANCEL,
+ GA_Disabled,TRUE,
+ GA_RelVerify,TRUE,
+ GA_Text,messages_get("Abort"),
+ GA_TabCycle,TRUE,
+ ButtonEnd,
+*/
+ EndGroup,
+ EndWindow;
+
+ ami_print_info.win = (struct Window *)RA_OpenWindow(ami_print_info.objects[OID_MAIN]);
+}
Modified: branches/MarkieB/gtkmain/amiga/print.h
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/print.h?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/print.h (original)
+++ branches/MarkieB/gtkmain/amiga/print.h Sun Sep 13 08:46:59 2009
@@ -18,7 +18,13 @@
#ifndef AMIGA_PRINT_H
#define AMIGA_PRINT_H
+#include <proto/exec.h>
+
struct content;
void ami_print(struct content *c);
+bool ami_print_cont(void);
+struct MsgPort *ami_print_init(void);
+void ami_print_free(void);
+struct MsgPort *ami_print_get_msgport(void);
#endif
Modified: branches/MarkieB/gtkmain/amiga/resources/Themes/AISS/Theme
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/resources/Themes/AISS/Theme?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/resources/Themes/AISS/Theme (original)
+++ branches/MarkieB/gtkmain/amiga/resources/Themes/AISS/Theme Sun Sep 13 08:46:59 2009
@@ -30,6 +30,7 @@
theme_throbber:Throbber
theme_throbber_frames:13
theme_throbber_delay:100
+theme_tab_loading:*TBImages:list_flagyellow
ptr_default:*PROGDIR:Resources/Pointers/Default
ptr_point:*PROGDIR:Resources/Pointers/Point
ptr_caret:*PROGDIR:Resources/Pointers/Caret
Modified: branches/MarkieB/gtkmain/amiga/resources/Themes/Default/Theme
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/resources/Themes/Default/Theme?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/resources/Themes/Default/Theme (original)
+++ branches/MarkieB/gtkmain/amiga/resources/Themes/Default/Theme Sun Sep 13 08:46:59 2009
@@ -43,6 +43,7 @@
theme_throbber:Throbber
theme_throbber_frames:9
theme_throbber_delay:100
+theme_tab_loading:
ptr_default:*PROGDIR:Resources/Pointers/Default
ptr_point:*PROGDIR:Resources/Pointers/Point
ptr_caret:*PROGDIR:Resources/Pointers/Caret
Modified: branches/MarkieB/gtkmain/amiga/thumbnail.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/amiga/thumbnail.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/amiga/thumbnail.c (original)
+++ branches/MarkieB/gtkmain/amiga/thumbnail.c Sun Sep 13 08:46:59 2009
@@ -40,9 +40,11 @@
bitmap->nativebmwidth = bitmap->width;
bitmap->nativebmheight = bitmap->height;
ami_clearclipreg(&browserglob);
+ current_redraw_browser = curbw;
plot = amiplot;
content_redraw(content, 0, 0, content->width, content->width,
0, 0, content->width, content->width, 1.0, 0xFFFFFF);
+ current_redraw_browser = NULL;
if(GfxBase->lib_Version >= 53) // AutoDoc says v52, but this function isn't in OS4.0, so checking for v53 (OS4.1)
{
Modified: branches/MarkieB/gtkmain/content/content.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/content/content.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/content/content.c (original)
+++ branches/MarkieB/gtkmain/content/content.c Sun Sep 13 08:46:59 2009
@@ -492,6 +492,33 @@
if (c->status == CONTENT_STATUS_ERROR)
/* error state */
continue;
+ /** \todo We need to reconsider the entire caching strategy in
+ * the light of data being shared between specific contents.
+ *
+ * For example, string dictionaries are owned by the document,
+ * and all stylesheets used by the document share the same
+ * dictionary.
+ *
+ * The CSS content handler retrieves the dictionary from its
+ * parent content. This relies upon there being a 1:1 mapping
+ * between documents and stylesheets.
+ *
+ * The type of a content is only known once we've received the
+ * headers from the fetch layer (and potentially some of the
+ * content data, too, if we ever sniff for the type). There
+ * is thus a problem with returning contents of unknown type
+ * here -- when we subsequently discover that they must only
+ * have one user, we clone them. By that point, however, we've
+ * no idea what the parent content is, which means that they
+ * end up with the wrong parent (and thus wrong dictionary).
+ *
+ * Of course, the problem with ignoring unknown content types
+ * here is that, for all the content types which may be shared,
+ * we end up duplicating them and wasting memory. Hence the
+ * need to reconsider everything.
+ */
+ if (c->type == CONTENT_UNKNOWN)
+ continue;
if (c->type != CONTENT_UNKNOWN &&
handler_map[c->type].no_share &&
c->user_list->next)
Modified: branches/MarkieB/gtkmain/css/select.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/css/select.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/css/select.c (original)
+++ branches/MarkieB/gtkmain/css/select.c Sun Sep 13 08:46:59 2009
@@ -17,6 +17,7 @@
*/
#include <assert.h>
+#include <stdbool.h>
#include <string.h>
#include <strings.h>
@@ -444,8 +445,8 @@
* \return CSS_OK on success,
* CSS_NOMEM on memory exhaustion.
*
- * \note The returned array will be destroyed by libcss. Therefore, it must
- * be allocated using the same allocator as used by libcss during style
+ * \note The returned array will be destroyed by libcss. Therefore, it must
+ * be allocated using the same allocator as used by libcss during style
* selection.
*/
css_error node_classes(void *pw, void *node,
@@ -497,7 +498,7 @@
}
result = temp;
- lerror = lwc_context_intern(dict, start, p - start,
+ lerror = lwc_context_intern(dict, start, p - start,
&result[items]);
switch (lerror) {
case lwc_error_oom:
@@ -920,7 +921,7 @@
{
xmlNode *n = node;
xmlAttr *attr;
-
+
attr = xmlHasProp(n, (const xmlChar *) lwc_string_data(name));
*match = attr != NULL;
@@ -954,7 +955,7 @@
if (attr != NULL) {
*match = strlen((const char *) attr) ==
lwc_string_length(value) &&
- strncmp((const char *) attr,
+ strncasecmp((const char *) attr,
lwc_string_data(value),
lwc_string_length(value)) == 0;
xmlFree(attr);
@@ -1099,7 +1100,7 @@
}
/**
- * Callback to determine if a node is a linking element whose target has been
+ * Callback to determine if a node is a linking element whose target has been
* visited.
*
* \param pw HTML document
@@ -1296,7 +1297,7 @@
if (bgcol == NULL)
return CSS_PROPERTY_NOT_SET;
- if (nscss_parse_colour((const char *) bgcol,
+ if (nscss_parse_colour((const char *) bgcol,
&hint->data.color)) {
hint->status = CSS_BACKGROUND_COLOR_COLOR;
} else {
@@ -1316,7 +1317,7 @@
if (align == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) align, "bottom") == 0) {
+ if (strcasecmp((const char *) align, "bottom") == 0) {
hint->status = CSS_CAPTION_SIDE_BOTTOM;
} else {
xmlFree(align);
@@ -1388,9 +1389,9 @@
if (align == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) align, "left") == 0) {
+ if (strcasecmp((const char *) align, "left") == 0) {
hint->status = CSS_FLOAT_LEFT;
- } else if (strcmp((const char *) align, "right") == 0) {
+ } else if (strcasecmp((const char *) align, "right") == 0) {
hint->status = CSS_FLOAT_RIGHT;
} else {
xmlFree(align);
@@ -1549,8 +1550,11 @@
property == CSS_PROP_BORDER_RIGHT_STYLE ||
property == CSS_PROP_BORDER_BOTTOM_STYLE ||
property == CSS_PROP_BORDER_LEFT_STYLE) {
+ bool is_table_cell = false;
+
if (strcmp((const char *) n->name, "td") == 0 ||
strcmp((const char *) n->name, "th") == 0) {
+ is_table_cell = true;
/* Find table */
for (n = n->parent; n != NULL &&
n->type == XML_ELEMENT_NODE;
@@ -1567,7 +1571,10 @@
if (strcmp((const char *) n->name, "table") == 0 &&
xmlHasProp(n,
(const xmlChar *) "border") != NULL) {
- hint->status = CSS_BORDER_STYLE_OUTSET;
+ if (is_table_cell)
+ hint->status = CSS_BORDER_STYLE_INSET;
+ else
+ hint->status = CSS_BORDER_STYLE_OUTSET;
return CSS_OK;
}
} else if (property == CSS_PROP_BORDER_TOP_WIDTH ||
@@ -1575,9 +1582,11 @@
property == CSS_PROP_BORDER_BOTTOM_WIDTH ||
property == CSS_PROP_BORDER_LEFT_WIDTH) {
xmlChar *width;
+ bool is_table_cell = false;
if (strcmp((const char *) n->name, "td") == 0 ||
strcmp((const char *) n->name, "th") == 0) {
+ is_table_cell = true;
/* Find table */
for (n = n->parent; n != NULL &&
n->type == XML_ELEMENT_NODE;
@@ -1602,6 +1611,12 @@
if (parse_dimension((const char *) width, false,
&hint->data.length.value,
&hint->data.length.unit)) {
+ if (is_table_cell &&
+ INTTOFIX(0) !=
+ hint->data.length.value) {
+ hint->data.length.value = INTTOFIX(1);
+ hint->data.length.unit = CSS_UNIT_PX;
+ }
hint->status = CSS_BORDER_WIDTH_WIDTH;
} else {
xmlFree(width);
@@ -1666,12 +1681,12 @@
if (align == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) align, "center") == 0 ||
- strcmp((const char *) align,
+ if (strcasecmp((const char *) align, "center") == 0 ||
+ strcasecmp((const char *) align,
"abscenter") == 0 ||
- strcmp((const char *) align,
+ strcasecmp((const char *) align,
"middle") == 0 ||
- strcmp((const char *) align,
+ strcasecmp((const char *) align,
"absmiddle") == 0) {
hint->status = CSS_MARGIN_AUTO;
} else {
@@ -1688,7 +1703,7 @@
if (align == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) align, "left") == 0) {
+ if (strcasecmp((const char *) align, "left") == 0) {
if (property == CSS_PROP_MARGIN_LEFT) {
hint->data.length.value = 0;
hint->data.length.unit = CSS_UNIT_PX;
@@ -1696,10 +1711,11 @@
} else {
hint->status = CSS_MARGIN_AUTO;
}
- } else if (strcmp((const char *) align,
+ } else if (strcasecmp((const char *) align,
"center") == 0) {
hint->status = CSS_MARGIN_AUTO;
- } else if (strcmp((const char *) align, "right") == 0) {
+ } else if (strcasecmp((const char *) align,
+ "right") == 0) {
if (property == CSS_PROP_MARGIN_RIGHT) {
hint->data.length.value = 0;
hint->data.length.unit = CSS_UNIT_PX;
@@ -1768,14 +1784,15 @@
if (align == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) align, "left") == 0) {
+ if (strcasecmp((const char *) align, "left") == 0) {
hint->status = CSS_TEXT_ALIGN_LEFT;
- } else if (strcmp((const char *) align,
+ } else if (strcasecmp((const char *) align,
"center") == 0) {
hint->status = CSS_TEXT_ALIGN_CENTER;
- } else if (strcmp((const char *) align, "right") == 0) {
+ } else if (strcasecmp((const char *) align,
+ "right") == 0) {
hint->status = CSS_TEXT_ALIGN_RIGHT;
- } else if (strcmp((const char *) align,
+ } else if (strcasecmp((const char *) align,
"justify") == 0) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
@@ -1793,14 +1810,16 @@
} else if (strcmp((const char *) n->name, "caption") == 0) {
align = xmlGetProp(n, (const xmlChar *) "align");
- if (align == NULL || strcmp((const char *) align,
+ if (align == NULL || strcasecmp((const char *) align,
"center") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
- } else if (strcmp((const char *) align, "left") == 0) {
+ } else if (strcasecmp((const char *) align,
+ "left") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
- } else if (strcmp((const char *) align, "right") == 0) {
+ } else if (strcasecmp((const char *) align,
+ "right") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
- } else if (strcmp((const char *) align,
+ } else if (strcasecmp((const char *) align,
"justify") == 0) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
@@ -1824,13 +1843,15 @@
if (align == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) align, "center") == 0) {
+ if (strcasecmp((const char *) align, "center") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_CENTER;
- } else if (strcmp((const char *) align, "left") == 0) {
+ } else if (strcasecmp((const char *) align,
+ "left") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_LEFT;
- } else if (strcmp((const char *) align, "right") == 0) {
+ } else if (strcasecmp((const char *) align,
+ "right") == 0) {
hint->status = CSS_TEXT_ALIGN_LIBCSS_RIGHT;
- } else if (strcmp((const char *) align,
+ } else if (strcasecmp((const char *) align,
"justify") == 0) {
hint->status = CSS_TEXT_ALIGN_JUSTIFY;
} else {
@@ -1864,15 +1885,15 @@
if (valign == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) valign, "top") == 0) {
+ if (strcasecmp((const char *) valign, "top") == 0) {
hint->status = CSS_VERTICAL_ALIGN_TOP;
- } else if (strcmp((const char *) valign,
+ } else if (strcasecmp((const char *) valign,
"middle") == 0) {
hint->status = CSS_VERTICAL_ALIGN_MIDDLE;
- } else if (strcmp((const char *) valign,
+ } else if (strcasecmp((const char *) valign,
"bottom") == 0) {
hint->status = CSS_VERTICAL_ALIGN_BOTTOM;
- } else if (strcmp((const char *) valign,
+ } else if (strcasecmp((const char *) valign,
"baseline") == 0) {
hint->status = CSS_VERTICAL_ALIGN_BASELINE;
} else {
@@ -1894,19 +1915,19 @@
if (valign == NULL)
return CSS_PROPERTY_NOT_SET;
- if (strcmp((const char *) valign, "top") == 0) {
+ if (strcasecmp((const char *) valign, "top") == 0) {
hint->status = CSS_VERTICAL_ALIGN_TOP;
- } else if (strcmp((const char *) valign,
- "bottom") == 0 ||
- strcmp((const char *) valign,
+ } else if (strcasecmp((const char *) valign,
+ "bottom") == 0 ||
+ strcasecmp((const char *) valign,
"baseline") == 0) {
hint->status = CSS_VERTICAL_ALIGN_BASELINE;
- } else if (strcmp((const char *) valign,
+ } else if (strcasecmp((const char *) valign,
"texttop") == 0) {
hint->status = CSS_VERTICAL_ALIGN_TEXT_TOP;
- } else if (strcmp((const char *) valign,
+ } else if (strcasecmp((const char *) valign,
"absmiddle") == 0 ||
- strcmp((const char *) valign,
+ strcasecmp((const char *) valign,
"abscenter") == 0) {
hint->status = CSS_VERTICAL_ALIGN_MIDDLE;
} else {
@@ -1984,8 +2005,8 @@
*
* \param a Name to match
* \param b Colour map entry to consider
- * \return 0 on match,
- * < 0 if a < b,
+ * \return 0 on match,
+ * < 0 if a < b,
* > 0 if b > a.
*/
int cmp_colour_name(const void *a, const void *b)
@@ -2211,7 +2232,7 @@
* \param maybe_negative Negative numbers permitted
* \param real Floating point numbers permitted
* \param value Pointer to location to receive numeric value
- * \param consumed Pointer to location to receive number of input
+ * \param consumed Pointer to location to receive number of input
* bytes consumed
* \return true on success, false on invalid input
*/
Modified: branches/MarkieB/gtkmain/render/layout.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/render/layout.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/render/layout.c (original)
+++ branches/MarkieB/gtkmain/render/layout.c Sun Sep 13 08:46:59 2009
@@ -70,7 +70,7 @@
struct box *box);
static bool layout_apply_minmax_height(struct box *box, struct box *container);
static void layout_block_add_scrollbar(struct box *box, int which);
-static int layout_solve_width(struct box *box, int available_width, int width,
+static int layout_solve_width(struct box *box, int available_width, int width,
int lm, int rm, int max_width, int min_width);
static void layout_float_find_dimensions(int available_width,
const css_computed_style *style, struct box *box);
@@ -1024,16 +1024,16 @@
* \post \a box's left/right margins will be updated.
*/
-int layout_solve_width(struct box *box, int available_width, int width,
+int layout_solve_width(struct box *box, int available_width, int width,
int lm, int rm, int max_width, int min_width)
{
bool auto_width = false;
/* Increase specified left/right margins */
- if (box->margin[LEFT] != AUTO && box->margin[LEFT] < lm &&
+ if (box->margin[LEFT] != AUTO && box->margin[LEFT] < lm &&
box->margin[LEFT] >= 0)
box->margin[LEFT] = lm;
- if (box->margin[RIGHT] != AUTO && box->margin[RIGHT] < rm &&
+ if (box->margin[RIGHT] != AUTO && box->margin[RIGHT] < rm &&
box->margin[RIGHT] >= 0)
box->margin[RIGHT] = rm;
@@ -1095,10 +1095,10 @@
if (box->margin[LEFT] == AUTO && box->margin[RIGHT] == AUTO) {
/* make the margins equal, centering the element */
- box->margin[LEFT] = box->margin[RIGHT] =
+ box->margin[LEFT] = box->margin[RIGHT] =
(available_width - lm - rm -
- (box->border[LEFT].width + box->padding[LEFT] +
- width + box->padding[RIGHT] +
+ (box->border[LEFT].width + box->padding[LEFT] +
+ width + box->padding[RIGHT] +
box->border[RIGHT].width)) / 2;
if (box->margin[LEFT] < 0) {
@@ -1110,17 +1110,17 @@
} else if (box->margin[LEFT] == AUTO) {
box->margin[LEFT] = available_width - lm -
- (box->border[LEFT].width + box->padding[LEFT] +
- width + box->padding[RIGHT] +
+ (box->border[LEFT].width + box->padding[LEFT] +
+ width + box->padding[RIGHT] +
box->border[RIGHT].width + box->margin[RIGHT]);
- box->margin[LEFT] = box->margin[LEFT] < lm
+ box->margin[LEFT] = box->margin[LEFT] < lm
? lm : box->margin[LEFT];
} else {
/* margin-right auto or "over-constrained" */
box->margin[RIGHT] = available_width - rm -
(box->margin[LEFT] + box->border[LEFT].width +
- box->padding[LEFT] + width +
- box->padding[RIGHT] +
+ box->padding[LEFT] + width +
+ box->padding[RIGHT] +
box->border[RIGHT].width);
}
@@ -2677,7 +2677,7 @@
b->width = opt_maxwidth;
if (option_core_select_menu)
b->width += SCROLLBAR_WIDTH;
-
+
} else {
font_func->font_width(&fstyle, b->text,
b->length, &b->width);
@@ -3849,8 +3849,8 @@
css_computed_position(box->style) ==
CSS_POSITION_RELATIVE);
- if (box->float_container && (css_computed_float(box->style) ==
- CSS_FLOAT_LEFT ||
+ if (box->float_container &&
+ (css_computed_float(box->style) == CSS_FLOAT_LEFT ||
css_computed_float(box->style) == CSS_FLOAT_RIGHT)) {
containing_block = box->float_container;
} else {
@@ -3871,19 +3871,14 @@
else {
/* over constrained => examine direction property
* of containing block */
- if (containing_block->style) {
- if (css_computed_direction(containing_block->style) ==
- CSS_DIRECTION_LTR)
- /* left wins */
- right = -left;
- else if (css_computed_direction(
- containing_block->style) ==
- CSS_DIRECTION_RTL)
- /* right wins */
- left = -right;
- }
- else {
- /* no parent style, so assume LTR */
+ if (containing_block->style &&
+ css_computed_direction(
+ containing_block->style) ==
+ CSS_DIRECTION_RTL) {
+ /* right wins */
+ left = -right;
+ } else {
+ /* assume LTR in all other cases */
right = -left;
}
}
@@ -4226,7 +4221,7 @@
/* \todo layout_table considers margins etc. again */
if (!layout_table(box, width, content))
return false;
- layout_solve_width(box, box->parent->width, box->width, 0, 0,
+ layout_solve_width(box, box->parent->width, box->width, 0, 0,
-1, -1);
}
Modified: branches/MarkieB/gtkmain/utils/memdebug.c
URL: http://source.netsurf-browser.org/branches/MarkieB/gtkmain/utils/memdebug.c?rev=9568&r1=9567&r2=9568&view=diff
==============================================================================
--- branches/MarkieB/gtkmain/utils/memdebug.c (original)
+++ branches/MarkieB/gtkmain/utils/memdebug.c Sun Sep 13 08:46:59 2009
@@ -39,9 +39,12 @@
#include <stdlib.h>
#include <unistd.h>
#include <sys/socket.h>
+#ifdef riscos
+#include <unixlib/local.h>
#include "oslib/os.h"
#include "oslib/osfile.h"
+#endif
#include "memdebug.h"
@@ -50,7 +53,9 @@
#define MAGIC 0x34343434
#define GUARD 0x34
+#if defined(riscos) && !defined(__ELF__)
extern int __dynamic_num;
+#endif
struct memdebug {
size_t size;
@@ -141,7 +146,7 @@
}
if(logfile && source)
- fprintf(logfile, "MEM %s:%d malloc(%u) = %p\n",
+ fprintf(logfile, "MEM %s:%d malloc(%zu) = %p\n",
source, line, wantedsize, mem ? mem->mem : 0);
return (mem ? mem->mem : NULL);
}
@@ -171,7 +176,7 @@
}
if(logfile && source)
- fprintf(logfile, "MEM %s:%d calloc(%u,%u) = %p\n",
+ fprintf(logfile, "MEM %s:%d calloc(%zu,%zu) = %p\n",
source, line, wanted_elements, wanted_size, mem ? mem->mem : 0);
return (mem ? mem->mem : NULL);
}
@@ -193,7 +198,7 @@
memcpy(mem, str, len);
if(logfile)
- fprintf(logfile, "MEM %s:%d strdup(%p) (%u) = %p\n",
+ fprintf(logfile, "MEM %s:%d strdup(%p) (%zu) = %p\n",
source, line, str, len, mem);
return mem;
@@ -220,7 +225,7 @@
}
if(logfile)
- fprintf(logfile, "MEM %s:%d strndup(%p, %d) (%u) = %p\n",
+ fprintf(logfile, "MEM %s:%d strndup(%p, %zd) (%zu) = %p\n",
source, line, str, size, len, mem);
return mem;
@@ -240,7 +245,8 @@
return NULL;
if(ptr) {
- mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem));
+ mem = (struct memdebug *)(void *)
+ ((char *)ptr - offsetof(struct memdebug, mem));
}
if(logfile) {
@@ -249,7 +255,7 @@
for (i = 0; mem && i != 8; i++)
if (((char *) mem->mem)[mem->size + i] != GUARD)
fprintf(logfile, "GUARD %u match failed!\n", i);
- fprintf(logfile, "MEM %s:%d realloc(%p, %u) = ",
+ fprintf(logfile, "MEM %s:%d realloc(%p, %zu) = ",
source, line, ptr, wantedsize);
fflush(logfile);
}
@@ -279,11 +285,14 @@
assert(ptr != NULL);
- mem = (struct memdebug *)((char *)ptr - offsetof(struct memdebug, mem));
+ mem = (struct memdebug *)(void *)
+ ((char *)ptr - offsetof(struct memdebug, mem));
if(logfile) {
fprintf(logfile, "MEM %s:%d free(%p)\n", source, line, ptr);
if (mem->magic != MAGIC) {
fprintf(logfile, "MAGIC match failed!\n");
+#ifdef riscos
+ #ifndef __ELF__
if (__dynamic_num != -1) {
int size;
byte *base_address;
@@ -294,6 +303,10 @@
xosfile_save("core", (bits) base_address, 0, base_address,
base_address + size);
}
+ #else
+ __unixlib_write_coredump(NULL);
+ #endif
+#endif
}
fflush(logfile);
for (i = 0; i != 8; i++)
More information about the netsurf-commits
mailing list