X-Git-Url: https://git.decadent.org.uk/gitweb/?p=videolink.git;a=blobdiff_plain;f=style_sheets.cpp;h=6093585f527c29114391b59028c1e8cdffb105ea;hp=9c599826e921abace5045c2d8cbe0659b1bbfd88;hb=HEAD;hpb=99b1207e57f31c2f642219c2f2bce855d7bca20b diff --git a/style_sheets.cpp b/style_sheets.cpp index 9c59982..6093585 100644 --- a/style_sheets.cpp +++ b/style_sheets.cpp @@ -1,62 +1,38 @@ -// Copyright 2005 Ben Hutchings . +// Copyright 2005-6 Ben Hutchings . // See the file "COPYING" for licence details. #include "style_sheets.hpp" +#include "wchar_t_short.h" +#include #include -#include -#include -#include -#if MOZ_VERSION_MAJOR > 1 || (MOZ_VERSION_MAJOR == 1 && MOZ_VERSION_MINOR >= 8) -# include -#else -# include -#endif +#include +#include #include #include +#include "wchar_t_default.h" #include "xpcom_support.hpp" using xpcom_support::check; -// Load a CSS from an (absolute) URI. -// TODO: Support loading from an absolute, or better, relative filename. -already_AddRefed load_css(const char * uri) -{ - nsCOMPtr css_loader; - static const nsCID css_loader_cid = NS_CSS_LOADER_CID; - check(CallGetService(css_loader_cid, - getter_AddRefs(css_loader))); +// We just have to load and register a style-sheet as a user +// style-sheet. There is no need to do anything for each page. +void init_agent_style_sheet(const char * uri) +{ nsCOMPtr style_sheet_uri; check(NS_NewURI(getter_AddRefs(style_sheet_uri), nsCString(uri))); - nsICSSStyleSheet * style_sheet; - check(css_loader->LoadAgentSheet(style_sheet_uri, &style_sheet)); - return style_sheet; -} - -// Apply a style-sheet to a given presentation shell as the top-priority -// agent style-sheet and disable the preferences-derived style rules. -void apply_style_sheet(nsIStyleSheet * style_sheet, nsIPresShell * pres_shell) -{ - nsCOMArray style_sheets; - check(pres_shell->GetAgentStyleSheets(style_sheets)); - check(style_sheets.AppendObject(style_sheet)); - check(pres_shell->SetAgentStyleSheets(style_sheets)); - - // FIXME: We need to find an alternative that works in Mozilla 1.8. -# if MOZ_VERSION_MAJOR == 1 && MOZ_VERSION_MINOR < 8 - check(pres_shell->EnablePrefStyleRules(false)); -# endif - - // Update the display -# if MOZ_VERSION_MAJOR > 1 \ - || (MOZ_VERSION_MAJOR == 1 && MOZ_VERSION_MINOR >= 8) - pres_shell->ReconstructStyleData(); - check(pres_shell->FlushPendingNotifications(Flush_Display)); -# else - check(pres_shell->ReconstructStyleData()); - check(pres_shell->FlushPendingNotifications(true)); -# endif + nsCOMPtr style_sheet_service; + static const nsCID style_sheet_service_cid = { + // NS_STYLESHEETSERVICE_CID copied from + // layout/base/nsStyleSheetService.cpp + 0xfcca6f83, 0x9f7d, 0x44e4, + {0xa7, 0x4b, 0xb5, 0x94, 0x33, 0xe6, 0xc8, 0xc3} + }; + check(CallGetService( + style_sheet_service_cid, getter_AddRefs(style_sheet_service))); + check(style_sheet_service->LoadAndRegisterSheet( + style_sheet_uri, nsIStyleSheetService::USER_SHEET)); }