31#include <gdk/gdkkeysyms.h>
32#include <gdk-pixbuf/gdk-pixdata.h>
72#define THROBBER_FRAME_TIME (100)
154 (intptr_t)user_data);
157#if GTK_CHECK_VERSION(3,0,0)
167 .background_images =
true,
182 assert(GTK_WIDGET(gw->
layout) == widget);
189 cairo_clip_extents(cr, &x1, &y1, &x2, &y2);
197 -gtk_adjustment_get_value(hscroll),
198 -gtk_adjustment_get_value(vscroll),
219 .background_images =
true,
229 assert(GTK_WIDGET(gw->
layout) == widget);
233 clip.x0 =
event->area.x;
234 clip.y0 =
event->area.y;
235 clip.x1 =
event->area.x +
event->area.width;
236 clip.y1 =
event->area.y +
event->area.height;
253 GdkEventMotion *event,
257 bool shift =
event->
state & GDK_SHIFT_MASK;
258 bool ctrl =
event->state & GDK_CONTROL_MASK;
260 if ((fabs(event->x - g->
last_x) < 5.0) &&
261 (fabs(event->y - g->
last_y) < 5.0)) {
326 GdkEventButton *event,
332 gtk_widget_grab_focus(GTK_WIDGET(g->
layout));
338 switch (event->button) {
368 if (event->type == GDK_3BUTTON_PRESS)
370 else if (event->type == GDK_2BUTTON_PRESS)
374 if (event->state & GDK_SHIFT_MASK)
376 if (event->state & GDK_CONTROL_MASK)
378 if (event->state & GDK_MOD1_MASK)
397 GdkEventButton *event,
418 !(event->state & GDK_SHIFT_MASK)) {
422 !(event->state & GDK_CONTROL_MASK)) {
426 !(event->state & GDK_MOD1_MASK)) {
447 GdkEventScroll *event,
458 switch (event->direction) {
459 case GDK_SCROLL_LEFT:
467 case GDK_SCROLL_RIGHT:
471 case GDK_SCROLL_DOWN:
475#if GTK_CHECK_VERSION(3,4,0)
476 case GDK_SCROLL_SMOOTH:
477 gdk_event_get_scroll_deltas((GdkEvent *)event, &deltax, &deltay);
481 NSLOG(netsurf, INFO,
"Unhandled mouse scroll direction");
490 deltax, deltay) !=
true) {
496 value = gtk_adjustment_get_value(
hscroll) + deltax;
508 gtk_adjustment_set_value(
hscroll, value);
513 value = gtk_adjustment_get_value(
vscroll) + deltay;
525 gtk_adjustment_set_value(
vscroll, value);
541 if (gtk_im_context_filter_keypress(g->
input_method, event))
549 if ((event->state & 0x7) != 0)
560 switch (event->keyval) {
565 gtk_adjustment_set_value(
vscroll, value);
575 gtk_adjustment_set_value(
vscroll, value);
580 value = gtk_adjustment_get_value(
hscroll) -
586 gtk_adjustment_set_value(
hscroll, value);
591 value = gtk_adjustment_get_value(
vscroll) -
597 gtk_adjustment_set_value(
vscroll, value);
602 value = gtk_adjustment_get_value(
hscroll) +
608 gtk_adjustment_set_value(
hscroll, value);
613 value = gtk_adjustment_get_value(
vscroll) +
619 gtk_adjustment_set_value(
vscroll, value);
624 value = gtk_adjustment_get_value(
vscroll) -
630 gtk_adjustment_set_value(
vscroll, value);
635 value = gtk_adjustment_get_value(
vscroll) +
641 gtk_adjustment_set_value(
vscroll, value);
660 return gtk_im_context_filter_keypress(g->
input_method, event);
670 size_t len = strlen(str), offset = 0;
672 while (offset < len) {
673 uint32_t nskey =
utf8_to_ucs4(str + offset, len - offset);
684 GtkAllocation *allocation,
709 GtkAllocation pane_alloc;
711 gtk_widget_get_allocation(GTK_WIDGET(g->
paned), &pane_alloc);
716 gtk_paned_set_position(g->
paned,
717 (
nsoption_int(toolbar_status_size) * pane_alloc.width) / 10000);
722 ((gtk_paned_get_position(g->
paned) * 10000) / (pane_alloc.width - 1)));
732 GtkAllocation *allocation,
735 gtk_paned_set_position(GTK_PANED(widget),
736 (
nsoption_int(toolbar_status_size) * allocation->width) / 10000);
756 if (gw->
icon != NULL) {
757 g_object_unref(gw->
icon);
774 const char *cur_bar_show;
777 if (cur_bar_show != NULL) {
778 if (strcmp(cur_bar_show,
"menu/tool") == 0) {
780 }
else if (strcmp(cur_bar_show,
"tool") == 0) {
837 GtkBuilder* tab_builder;
841 open_in_background =
false;
847 NSLOG(netsurf, INFO,
"Tab contents UI builder init failed");
851 gtk_builder_connect_signals(tab_builder, NULL);
853 g = calloc(1,
sizeof(*g));
856 g_object_unref(tab_builder);
860 NSLOG(netsurf, INFO,
"Creating gui window %p for browser window %p",
870 if (existing != NULL) {
882 g_object_unref(tab_builder);
887 g->
container = GTK_WIDGET(gtk_builder_get_object(tab_builder,
"tabBox"));
888 g->
layout = GTK_LAYOUT(gtk_builder_get_object(tab_builder,
"layout"));
889 g->
grid = GTK_WIDGET(gtk_builder_get_object(tab_builder,
"tabContents"));
890 g->
status_bar = GTK_LABEL(gtk_builder_get_object(tab_builder,
"status_bar"));
891 g->
paned = GTK_PANED(gtk_builder_get_object(tab_builder,
"hpaned1"));
901 g_object_unref(tab_builder);
909 g_object_unref(tab_builder);
928 gtk_widget_add_events(GTK_WIDGET(g->
layout),
930 GDK_LEAVE_NOTIFY_MASK |
931 GDK_BUTTON_PRESS_MASK |
932 GDK_BUTTON_RELEASE_MASK |
933 GDK_POINTER_MOTION_MASK |
934 GDK_POINTER_MOTION_HINT_MASK |
936 GDK_KEY_RELEASE_MASK |
943 0, 0xffff, 0xffff, 0xffff);
949#define CONNECT(obj, sig, callback, ptr) \
950 g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
1003 g_object_unref(tab_builder);
1008 NSLOG(netsurf, WARNING,
"Unable to focus location input");
1018 NSLOG(netsurf, INFO,
"gui_window: %p", gw);
1020 assert(gw->
bw != NULL);
1050 struct bitmap *icon_bitmap = NULL;
1053 if (gw->
icon != NULL) {
1054 g_object_unref(gw->
icon);
1060 if (icon_bitmap != NULL) {
1061 NSLOG(netsurf, INFO,
"Using %p bitmap", icon_bitmap);
1066 if (gw->
icon == NULL) {
1067 NSLOG(netsurf, INFO,
"Using default favicon");
1087 *sy = (int)(gtk_adjustment_get_value(vadj));
1088 *sx = (int)(gtk_adjustment_get_value(hadj));
1103 gtk_widget_queue_draw_area(GTK_WIDGET(g->
layout),
1121 gtk_widget_queue_draw_area(GTK_WIDGET(g->
layout),
1140 gtk_widget_queue_draw(GTK_WIDGET(g->
layout));
1150 gtk_widget_queue_draw_area(GTK_WIDGET(g->
layout),
1184 gdouble vlower, vpage, vupper, hlower, hpage, hupper;
1185 gdouble x = (gdouble)
rect->
x0;
1186 gdouble y = (gdouble)
rect->
y0;
1191 g_object_get(vadj,
"page-size", &vpage,
"lower", &vlower,
"upper", &vupper, NULL);
1192 g_object_get(hadj,
"page-size", &hpage,
"lower", &hlower,
"upper", &hupper, NULL);
1197 if (x > (hupper - hpage)) {
1203 if (y > (vupper - vpage)) {
1207 gtk_adjustment_set_value(vadj, y);
1208 gtk_adjustment_set_value(hadj, x);
1219 gtk_layout_set_size(g->
layout, w, h);
1220 gtk_widget_queue_resize(g->
grid);
1228 GdkCursor *cursor = NULL;
1229 GdkCursorType cursortype;
1230 bool nullcursor =
false;
1239 cursortype = GDK_HAND2;
1242 cursortype = GDK_XTERM;
1245 cursortype = GDK_TOP_SIDE;
1248 cursortype = GDK_BOTTOM_SIDE;
1251 cursortype = GDK_LEFT_SIDE;
1254 cursortype = GDK_RIGHT_SIDE;
1257 cursortype = GDK_BOTTOM_LEFT_CORNER;
1260 cursortype = GDK_BOTTOM_RIGHT_CORNER;
1263 cursortype = GDK_TOP_LEFT_CORNER;
1266 cursortype = GDK_TOP_RIGHT_CORNER;
1269 cursortype = GDK_CROSS;
1272 cursortype = GDK_FLEUR;
1275 cursortype = GDK_WATCH;
1278 cursortype = GDK_QUESTION_ARROW;
1288 cursortype = GDK_WATCH;
1299 cursor = gdk_cursor_new_for_display(
1300 gtk_widget_get_display(
1313 int x,
int y,
int height,
1336 gtk_widget_grab_focus(GTK_WIDGET(g->
layout));
1352 GtkAllocation alloc;
1357 *
width = alloc.width;
1366 gtk_widget_grab_focus(GTK_WIDGET(g->
layout));
1377 GtkWidget *menu_item;
1393 while (option != NULL) {
1394 NSLOG(netsurf, INFO,
"Item %"PRIdPTR
" option %p text %s",
1395 item, option, option->
text);
1396 menu_item = gtk_check_menu_item_new_with_label(option->
text);
1398 gtk_check_menu_item_set_active(
1399 GTK_CHECK_MENU_ITEM(menu_item), TRUE);
1408 g_signal_connect(menu_item,
"toggled",
1411 gtk_menu_shell_append(GTK_MENU_SHELL(
select_menu), menu_item);
1435 dialog = gtk_file_chooser_dialog_new(
"Select File",
1437 GTK_FILE_CHOOSER_ACTION_OPEN,
1442 NSLOG(netsurf, INFO,
"*** open dialog: %p",
dialog);
1444 int ret = gtk_dialog_run(GTK_DIALOG(
dialog));
1445 NSLOG(netsurf, INFO,
"*** return value: %d", ret);
1446 if (ret == GTK_RESPONSE_ACCEPT) {
1449 filename = gtk_file_chooser_get_filename(
1450 GTK_FILE_CHOOSER(
dialog));
1457 gtk_widget_destroy(
dialog);
1552 if ((title != NULL) && (title[0] !=
'\0')) {
1570 GdkPixbuf *pixbuf = NULL;
1580 if (pixbuf != NULL) {
1581 g_object_unref(pixbuf);
Browser window creation and manipulation interface.
nserror browser_window_schedule_reformat(struct browser_window *bw)
Reformat the browser window contents in a safe context.
bool browser_window_redraw(struct browser_window *bw, int x, int y, const struct rect *clip, const struct redraw_context *ctx)
Redraw an area of a window.
bool browser_window_has_content(struct browser_window *bw)
Find out if a browser window is currently showing a content.
void browser_window_mouse_click(struct browser_window *bw, browser_mouse_state mouse, int x, int y)
Handle mouse clicks in a browser window.
bool browser_window_scroll_at_point(struct browser_window *bw, int x, int y, int scrx, int scry)
Send a scroll request to a browser window at a particular point.
void browser_window_destroy(struct browser_window *bw)
Close and destroy a browser window.
nserror browser_window_get_extents(struct browser_window *bw, bool scaled, int *width, int *height)
Get a browser window's content extents.
void browser_window_mouse_track(struct browser_window *bw, browser_mouse_state mouse, int x, int y)
Handle non-click mouse action in a browser window.
void browser_window_set_gadget_filename(struct browser_window *bw, struct form_control *gadget, const char *fn)
set filename on form control.
void nsgtk_widget_get_allocation(GtkWidget *widget, GtkAllocation *allocation)
void nsgtk_widget_override_background_color(GtkWidget *widget, GtkStateFlags state, uint16_t a, uint16_t r, uint16_t g, uint16_t b)
GdkWindow * nsgtk_widget_get_window(GtkWidget *widget)
gulong nsgtk_connect_draw_event(GtkWidget *widget, GCallback callback, gpointer g)
void nsgdk_cursor_unref(GdkCursor *cursor)
gdouble nsgtk_adjustment_get_page_increment(GtkAdjustment *adjustment)
void nsgtk_widget_set_can_focus(GtkWidget *widget, gboolean can_focus)
gdouble nsgtk_adjustment_get_upper(GtkAdjustment *adjustment)
gdouble nsgtk_adjustment_get_lower(GtkAdjustment *adjustment)
GtkAdjustment * nsgtk_layout_get_vadjustment(GtkLayout *layout)
GtkAdjustment * nsgtk_layout_get_hadjustment(GtkLayout *layout)
GdkWindow * nsgtk_layout_get_bin_window(GtkLayout *layout)
gdouble nsgtk_adjustment_get_step_increment(GtkAdjustment *adjustment)
void nsgtk_menu_popup_at_pointer(GtkMenu *menu, const GdkEvent *trigger_event)
Displays menu and makes it available for selection.
Compatibility functions for older GTK versions (interface)
#define GTK_STATE_FLAG_NORMAL
#define NSGTK_STOCK_CANCEL
nserror
Enumeration of error codes.
@ NSERROR_BAD_SIZE
Bad size.
nserror nsgtk_local_history_hide(void)
hide the local history window from being visible.
Interface to GTK local history manager.
Target independent plotting GTK+ interface.
nserror nsgtk_search_create(GtkBuilder *builder, struct browser_window *bw, struct gtk_search **search_out)
create text search context
nserror nsgtk_search_restyle(struct gtk_search *search)
update search toolbar size and style
nserror nsgtk_search_toggle_visibility(struct gtk_search *search)
toggle search bar visibility
free text page search for gtk interface
GdkPixbuf * nsgdk_pixbuf_get_from_surface(cairo_surface_t *surface, int scwidth, int scheight)
obtain a pixbuf of the specified size from a cairo surface.
GDK support functions for missing interfaces.
nserror nsgtk_warning(const char *warning, const char *detail)
Warn the user of an event.
GdkPixbuf * favicon_pixbuf
favicon default pixbuf
uint32_t gtk_gui_gdkkey_to_nskey(GdkEventKey *key)
input conversion.
const struct plotter_table nsgtk_plotters
GTK plotter table.
void nsgtk_plot_caret(int x, int y, int h)
Plot a caret.
nserror nsgtk_schedule(int t, void(*callback)(void *p), void *cbctx)
nserror nsgtk_throbber_get_frame(int frame, GdkPixbuf **pixbuf)
get the pixbuf of a given frame of the throbber
nserror nsgtk_window_search_toggle(struct gui_window *gw)
toggle search visibility
nserror nsgtk_window_position_local_history(struct gui_window *gw)
position local_history appropriately
static gboolean nsgtk_paned_size_allocate_event(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
Set status bar / scroll bar proportion according to user option when pane is resized.
struct gui_window_table * nsgtk_window_table
static void gui_window_start_selection(struct gui_window *g)
static void gui_window_set_status(struct gui_window *g, const char *text)
static nserror gui_window_event(struct gui_window *gw, enum gui_window_event event)
GTK window UI callback to process miscellaneous events.
static void gui_window_set_pointer(struct gui_window *g, gui_pointer_shape shape)
static void gui_window_remove_caret(struct gui_window *g)
static nserror gui_window_get_dimensions(struct gui_window *gw, int *width, int *height)
Find the current dimensions of a GTK browser window content area.
static void gui_window_update_extent(struct gui_window *g)
static gboolean nsgtk_window_keypress_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
static void nsgtk_paned_notify__position(GObject *gobject, GParamSpec *pspec, gpointer data)
when the pane position is changed update the user option
static void gui_window_set_icon(struct gui_window *gw, struct hlcache_handle *icon)
favicon setting for gtk gui window.
struct gui_search_web_table * nsgtk_search_web_table
static void nsgtk_select_menu_clicked(GtkCheckMenuItem *checkmenuitem, gpointer user_data)
void nsgtk_window_destroy_browser(struct gui_window *gw)
destroy browsing context
static nserror nsgtk_window_invalidate_area(struct gui_window *g, const struct rect *rect)
Invalidates an area of a GTK browser window.
static struct gui_window * gui_window_create(struct browser_window *bw, struct gui_window *existing, gui_window_create_flags flags)
Create and open a gtk container (window or tab) for a browsing context.
struct nsgtk_scaffolding * nsgtk_get_scaffold(struct gui_window *g)
get containing nsgtk scaffolding handle from gui window handle
static GtkWidget * select_menu
static nserror gui_window_set_url(struct gui_window *gw, nsurl *url)
GTK window UI callback when core changes the current url.
nserror nsgtk_window_item_activate(struct gui_window *gw, nsgtk_toolbar_button itemid)
activate the handler for a item in a toolbar of a gui window
static struct gui_window_table window_table
GTK frontend browser window operation table.
static void nsgtk_window_input_method_commit(GtkIMContext *ctx, const gchar *str, gpointer data)
static gboolean nsgtk_window_size_allocate_event(GtkWidget *widget, GtkAllocation *allocation, gpointer data)
static gboolean nsgtk_window_draw_event(GtkWidget *widget, GdkEventExpose *event, gpointer data)
nserror nsgtk_window_update_all(void)
Every window will have its tab, toolbar and drawing area updated.
static gboolean nsgtk_window_button_press_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
GTK signal handler for button-press-event on layout.
static struct form_control * select_menu_control
nserror nsgtk_window_position_page_info(struct gui_window *gw, struct nsgtk_pi_window *win)
position page_info appropriately
static nserror throbber(struct gui_window *gw, bool active)
handle throbber changing state
nserror nsgtk_window_toolbar_show(struct nsgtk_scaffolding *gs, bool show)
Windows associated with a scaffold will have their toolbar show state set.
static gboolean nsgtk_window_button_release_event(GtkWidget *widget, GdkEventButton *event, gpointer data)
GtkLayout * nsgtk_window_get_layout(struct gui_window *g)
get gtk layout from gui handle
static void gui_window_place_caret(struct gui_window *g, int x, int y, int height, const struct rect *clip)
static gboolean nsgtk_window_motion_notify_event(GtkWidget *widget, GdkEventMotion *event, gpointer data)
static bool gui_window_get_scroll(struct gui_window *g, int *sx, int *sy)
static gboolean nsgtk_window_keyrelease_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
static nserror gui_search_web_provider_update(const char *name, struct bitmap *bitmap)
GTK UI callback when search provider details are updated.
static nserror gui_window_set_scroll(struct gui_window *g, const struct rect *rect)
Set the scroll position of a gtk browser window.
static void gui_window_set_title(struct gui_window *gw, const char *title)
GTK window UI callback when core changes the current title.
static struct gui_search_web_table search_web_table
GTK frontend web search operation table.
struct gui_window * window_list
static void nsgtk_redraw_caret(struct gui_window *g)
#define CONNECT(obj, sig, callback, ptr)
struct browser_window * nsgtk_get_browser_window(struct gui_window *g)
get core browsing context from gui window handle
static struct browser_window * bw_from_gw(void *data)
#define THROBBER_FRAME_TIME
time (in ms) between throbber animation frame updates
static nserror page_info_change(struct gui_window *gw)
handle page info changing
static void gui_window_file_gadget_open(struct gui_window *g, struct hlcache_handle *hl, struct form_control *gadget)
GTK window UI callback when core needs a file selection gadget.
static bool get_tool_bar_show(void)
static gboolean nsgtk_window_focus_out_event(GtkWidget *widget, GdkEvent *event, gpointer data)
GTK signal handler for focus-out-event on layout.
static void window_destroy(GtkWidget *widget, gpointer data)
handler for gtk destroy signal on window container
static void gui_window_create_form_select_menu(struct gui_window *g, struct form_control *control)
static void gui_window_destroy(struct gui_window *gw)
nserror nsgtk_window_toolbar_update(void)
every window will have its toolbar updated to reflect user settings
static gboolean nsgtk_window_scroll_event(GtkWidget *widget, GdkEventScroll *event, gpointer data)
static void next_throbber_frame(void *p)
Make the throbber advance to next frame.
Public content interface.
struct bitmap * content_get_bitmap(struct hlcache_handle *h)
Retrieve the bitmap contained in an image content.
Core mouse and pointer states.
browser_mouse_state
Mouse state: 1 is primary mouse button.
@ BROWSER_MOUSE_CLICK_4
button 4 clicked.
@ BROWSER_MOUSE_PRESS_1
primary button pressed
@ BROWSER_MOUSE_CLICK_2
button 2 clicked.
@ BROWSER_MOUSE_PRESS_3
secondary button pressed
@ BROWSER_MOUSE_PRESS_4
fourth button pressed
@ BROWSER_MOUSE_PRESS_2
auxillary button pressed
@ BROWSER_MOUSE_PRESS_5
fifth button pressed
@ BROWSER_MOUSE_CLICK_3
button 3 clicked.
@ BROWSER_MOUSE_TRIPLE_CLICK
button triple clicked
@ BROWSER_MOUSE_CLICK_1
button 1 clicked.
@ BROWSER_MOUSE_MOD_2
2nd modifier key pressed (eg.
@ BROWSER_MOUSE_DOUBLE_CLICK
button double clicked
@ BROWSER_MOUSE_MOD_3
3rd modifier key pressed (eg.
@ BROWSER_MOUSE_MOD_1
1st modifier key pressed (eg.
@ BROWSER_MOUSE_DRAG_1
start of button 1 drag
@ BROWSER_MOUSE_HOLDING_2
during button 2 drag
@ BROWSER_MOUSE_HOLDING_1
during button 1 drag
@ BROWSER_MOUSE_DRAG_ON
a drag operation was started and a mouse button is still pressed
@ BROWSER_MOUSE_CLICK_5
button 5 clicked.
@ BROWSER_MOUSE_DRAG_2
start of button 2 drag
@ GUI_POINTER_NOT_ALLOWED
Target independent plotting interface.
Interface to platform-specific graphical user interface window operations.
gui_window_create_flags
Window creation control flags.
@ GW_CREATE_TAB
Create tab in same window as existing.
@ GW_CREATE_FOREGROUND
Request this window/tab is foregrounded.
@ GW_CREATE_FOCUS_LOCATION
gui_window_event
Window events.
@ GW_EVENT_PAGE_INFO_CHANGE
Page status has changed and so the padlock should be updated.
@ GW_EVENT_REMOVE_CARET
Remove the caret, if present.
@ GW_EVENT_STOP_THROBBER
stop the navigation throbber.
@ GW_EVENT_UPDATE_EXTENT
Update the extent of the inside of a browser window to that of the current content.
@ GW_EVENT_START_SELECTION
selection started
@ GW_EVENT_START_THROBBER
start the navigation throbber.
Netsurf additional integer type formatting macros.
Interface to key press operations.
bool browser_window_key_press(struct browser_window *bw, uint32_t key)
Handle key presses in a browser window.
#define NSLOG(catname, level, logmsg, args...)
const char * messages_get(const char *key)
Fast lookup of a message by key from the standard Messages hash.
Localised message support (interface).
NetSurf URL handling (interface).
struct nsurl nsurl
NetSurf URL object.
GdkCursor * nsgtk_create_menu_cursor(void)
Creates a menu cursor from internal resources.
nserror nsgtk_builder_new_from_resname(const char *resname, GtkBuilder **builder_out)
Create gtk builder object for the named ui resource.
Interface to gtk builtin resource handling.
void nsgtk_scaffolding_set_title(struct gui_window *gw, const char *title)
set the title in the window
struct nsgtk_scaffolding * nsgtk_new_scaffolding(struct gui_window *toplevel)
create a new scaffolding for a window.
GtkNotebook * nsgtk_scaffolding_notebook(struct nsgtk_scaffolding *g)
Get the gtk notebook from a scaffold.
nserror nsgtk_scaffolding_throbber(struct gui_window *gw, bool active)
Update scaffolding window when throbber state changes.
GtkWindow * nsgtk_scaffolding_window(struct nsgtk_scaffolding *g)
Get the gtk window for a scaffolding.
void nsgtk_scaffolding_context_menu(struct nsgtk_scaffolding *g, gdouble x, gdouble y)
Open a context sensitive menu.
struct nsgtk_scaffolding * nsgtk_current_scaffolding(void)
Obtain the most recently used scaffolding element.
core web search facilities interface.
Interface to utility string handling.
RISC OS wimp toolkit bitmap.
cairo_surface_t * surface
Graphical user interface browser web search function table.
nserror(* provider_update)(const char *provider_name, struct bitmap *ico_bitmap)
called when the search provider details are updated.
Graphical user interface window function table.
struct gui_window *(* create)(struct browser_window *bw, struct gui_window *existing, gui_window_create_flags flags)
Create and open a gui window for a browsing context.
first entry in window list
struct gui_window * prev
Previous in linked list.
GtkIMContext * input_method
The input method to use with this window.
GtkLabel * status_bar
statusbar
GtkLayout * layout
display widget for this page or frame
int throb_frame
current frame of throbber
struct fbtk_widget_s * toolbar
struct gui_window * next
list for cleanup
gui_pointer_shape current_pointer
caret shape for rendering
GtkWidget * grid
The container for the layout etc.
nsbeos_scaffolding * scaffold
struct gtk_search * search
search toolbar context
browser_mouse_state state
int last_x
previous event location
struct s_search_form_session * search
struct nsgtk_scaffolding * scaffold
The gtk scaffold object containing menu, buttons, url bar, [tabs], drawing area, etc that may contain...
GtkWidget * tab
handle to the the visible tab
struct fbtk_widget_s * hscroll
struct fbtk_widget_s * vscroll
struct nsgtk_toolbar * toolbar
controls toolbar context
GtkPaned * paned
status pane
int caretx
caret dimension and location for rendering
GtkWidget * container
The top level container (tabBox)
struct gui_window::@32 mouse
GdkPixbuf * icon
The icon this window should have.
bool paned_sized
has the status pane had its first size operation yet?
struct browser_window * bw
The 'content' window that is rendered in the gui_window.
GTK certificate viewing window context.
Core scaffolding structure.
bool interactive
Redraw to show interactive features.
nserror nsgtk_tab_set_title(GtkWidget *page, const char *title)
set the tab title
nserror nsgtk_tab_set_icon(GtkWidget *page, GdkPixbuf *pixbuf)
set the tab icon
void nsgtk_tab_options_changed(GtkNotebook *notebook)
void nsgtk_tab_add(struct gui_window *gw, GtkWidget *tab_contents, bool background, const char *title, GdkPixbuf *icon_pixbuf)
Add new gui window page to notebook.
void browser_window_remove_caret(struct browser_window *bw, bool only_hide)
Removes the caret and callback for key process.
Textual input handling interface.
Option reading and saving interface.
#define nsoption_charp(OPTION)
Get the value of a string option.
#define nsoption_int(OPTION)
Get the value of an integer option.
#define nsoption_set_int(OPTION, VALUE)
set an integer option in the default table
#define nsoption_bool(OPTION)
Get the value of a boolean option.
uint32_t utf8_to_ucs4(const char *s_in, size_t l)
Convert a UTF-8 multibyte sequence into a single UCS4 character.
size_t utf8_next(const char *s, size_t l, size_t o)
Find next legal UTF-8 char in string.
UTF-8 manipulation functions (interface).
Interface to a number of general purpose functionality.
static nserror text(const struct redraw_context *ctx, const struct plot_font_style *fstyle, int x, int y, const char *text, size_t length)
Text plotting.
static nserror clip(const struct redraw_context *ctx, const struct rect *clip)
Sets a clip rectangle for subsequent plot operations.