diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2012-08-22 12:22:58 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2012-08-22 12:22:58 +0100 |
commit | 153c4444543411b00fc8682bd38d6e1758a63082 (patch) | |
tree | 736bacbb3170ae71f6134811669b3a6ef60ab31d /desktop/browser_private.h | |
parent | d489908af8cda59c94ad2375e1340bad6957e64a (diff) | |
download | netsurf-153c4444543411b00fc8682bd38d6e1758a63082.tar.gz netsurf-153c4444543411b00fc8682bd38d6e1758a63082.tar.bz2 |
Move browser_window struct to private header. Places that shouldn't include it do, such as front end code.
Frontends that have been updated to build:
framebuffer
gtk
monkey
riscos
TODO:
amiga
atari
beos
cocoa
windows
Diffstat (limited to 'desktop/browser_private.h')
-rw-r--r-- | desktop/browser_private.h | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/desktop/browser_private.h b/desktop/browser_private.h new file mode 100644 index 000000000..91372acc3 --- /dev/null +++ b/desktop/browser_private.h @@ -0,0 +1,177 @@ +/* + * Copyright 2003 Phil Mellor <monkeyson@users.sourceforge.net> + * Copyright 2006 James Bursa <bursa@users.sourceforge.net> + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +/** \file + * Browser window private structure. + */ + +#ifndef _NETSURF_DESKTOP_BROWSER_PRIVATE_H_ +#define _NETSURF_DESKTOP_BROWSER_PRIVATE_H_ + +#include <stdbool.h> + +#include "desktop/browser.h" + + +struct box; +struct hlcache_handle; +struct gui_window; +struct history; +struct selection; + +/** Browser window data. */ +struct browser_window { + /** Page currently displayed, or 0. Must have status READY or DONE. */ + struct hlcache_handle *current_content; + /** Page being loaded, or 0. */ + struct hlcache_handle *loading_content; + + /** Page Favicon */ + struct hlcache_handle *current_favicon; + /** handle for favicon which we started loading early */ + struct hlcache_handle *loading_favicon; + /** favicon fetch already failed - prevents infinite error looping */ + bool failed_favicon; + + /** Window history structure. */ + struct history *history; + + /** Handler for keyboard input, or 0. */ + browser_caret_callback caret_callback; + /** Handler for pasting text, or 0. */ + browser_paste_callback paste_callback; + /** Handler for repositioning caret, or 0. */ + browser_move_callback move_callback; + + /** User parameters for caret_callback, paste_callback, and + * move_callback */ + void *caret_p1; + void *caret_p2; + + /** Platform specific window data. */ + struct gui_window *window; + + /** Busy indicator is active. */ + bool throbbing; + /** Add loading_content to the window history when it loads. */ + bool history_add; + + /** Fragment identifier for current_content. */ + lwc_string *frag_id; + + /** Current drag status. */ + browser_drag_type drag_type; + + /** Current drag's browser window, when not in root bw. */ + struct browser_window *drag_window; + + /** Mouse position at start of current scroll drag. */ + int drag_start_x; + int drag_start_y; + /** Scroll offsets at start of current scroll draw. */ + int drag_start_scroll_x; + int drag_start_scroll_y; + /** Frame resize directions for current frame resize drag. */ + unsigned int drag_resize_left : 1; + unsigned int drag_resize_right : 1; + unsigned int drag_resize_up : 1; + unsigned int drag_resize_down : 1; + + /** Current fetch is download */ + bool download; + + /** Refresh interval (-1 if undefined) */ + int refresh_interval; + + /** Window has been resized, and content needs reformatting. */ + bool reformat_pending; + + /** Window dimensions */ + int x; + int y; + int width; + int height; + + struct scrollbar *scroll_x; /**< Horizontal scroll. */ + struct scrollbar *scroll_y; /**< Vertical scroll. */ + + /** scale of window contents */ + float scale; + + /** Window characteristics */ + enum { + BROWSER_WINDOW_NORMAL, + BROWSER_WINDOW_IFRAME, + BROWSER_WINDOW_FRAME, + BROWSER_WINDOW_FRAMESET, + } browser_window_type; + + /** frameset characteristics */ + int rows; + int cols; + + /** frame dimensions */ + struct frame_dimension frame_width; + struct frame_dimension frame_height; + int margin_width; + int margin_height; + + /** frame name for targetting */ + char *name; + + /** frame characteristics */ + bool no_resize; + frame_scrolling scrolling; + bool border; + colour border_colour; + + /** iframe parent box */ + struct box *box; + + /** [cols * rows] children */ + struct browser_window *children; + struct browser_window *parent; + + /** [iframe_count] iframes */ + int iframe_count; + struct browser_window *iframes; + + /** browser window child of root browser window which has input focus */ + struct browser_window *focus; + + /** Last time a link was followed in this window */ + unsigned int last_action; + + /** Current selection, or NULL if none */ + struct selection *cur_sel; + + /** Current context for free text search, or NULL if none */ + struct search_context *cur_search; + + /** current javascript context */ + struct jscontext *jsctx; + + /** cache of the currently displayed status text. */ + char *status_text; /**< Current status bar text. */ + int status_text_len; /**< Length of the browser_window::status_text buffer. */ + int status_match; /**< Number of times an idempotent status-set operation was performed. */ + int status_miss; /**< Number of times status was really updated. */ +}; + +#endif |