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) {
360 if (event->type == GDK_3BUTTON_PRESS)
362 else if (event->type == GDK_2BUTTON_PRESS)
366 if (event->state & GDK_SHIFT_MASK)
368 if (event->state & GDK_CONTROL_MASK)
387 GdkEventButton *event,
391 bool shift =
event->
state & GDK_SHIFT_MASK;
392 bool ctrl =
event->state & GDK_CONTROL_MASK;
394 switch (event->button) {
402 NSLOG(netsurf, DEBUG,
"event button %d", event->button);
433 GdkEventScroll *event,
444 switch (event->direction) {
445 case GDK_SCROLL_LEFT:
453 case GDK_SCROLL_RIGHT:
457 case GDK_SCROLL_DOWN:
461#if GTK_CHECK_VERSION(3,4,0)
462 case GDK_SCROLL_SMOOTH:
463 gdk_event_get_scroll_deltas((GdkEvent *)event, &deltax, &deltay);
467 NSLOG(netsurf, INFO,
"Unhandled mouse scroll direction");
476 deltax, deltay) !=
true) {
482 value = gtk_adjustment_get_value(
hscroll) + deltax;
494 gtk_adjustment_set_value(
hscroll, value);
499 value = gtk_adjustment_get_value(
vscroll) + deltay;
511 gtk_adjustment_set_value(
vscroll, value);
527 if (gtk_im_context_filter_keypress(g->
input_method, event))
535 if ((event->state & 0x7) != 0)
546 switch (event->keyval) {
551 gtk_adjustment_set_value(
vscroll, value);
561 gtk_adjustment_set_value(
vscroll, value);
566 value = gtk_adjustment_get_value(
hscroll) -
572 gtk_adjustment_set_value(
hscroll, value);
577 value = gtk_adjustment_get_value(
vscroll) -
583 gtk_adjustment_set_value(
vscroll, value);
588 value = gtk_adjustment_get_value(
hscroll) +
594 gtk_adjustment_set_value(
hscroll, value);
599 value = gtk_adjustment_get_value(
vscroll) +
605 gtk_adjustment_set_value(
vscroll, value);
610 value = gtk_adjustment_get_value(
vscroll) -
616 gtk_adjustment_set_value(
vscroll, value);
621 value = gtk_adjustment_get_value(
vscroll) +
627 gtk_adjustment_set_value(
vscroll, value);
646 return gtk_im_context_filter_keypress(g->
input_method, event);
656 size_t len = strlen(str), offset = 0;
658 while (offset < len) {
659 uint32_t nskey =
utf8_to_ucs4(str + offset, len - offset);
670 GtkAllocation *allocation,
695 GtkAllocation pane_alloc;
697 gtk_widget_get_allocation(GTK_WIDGET(g->
paned), &pane_alloc);
702 gtk_paned_set_position(g->
paned,
703 (
nsoption_int(toolbar_status_size) * pane_alloc.width) / 10000);
708 ((gtk_paned_get_position(g->
paned) * 10000) / (pane_alloc.width - 1)));
718 GtkAllocation *allocation,
721 gtk_paned_set_position(GTK_PANED(widget),
722 (
nsoption_int(toolbar_status_size) * allocation->width) / 10000);
742 if (gw->
icon != NULL) {
743 g_object_unref(gw->
icon);
760 const char *cur_bar_show;
763 if (cur_bar_show != NULL) {
764 if (strcmp(cur_bar_show,
"menu/tool") == 0) {
766 }
else if (strcmp(cur_bar_show,
"tool") == 0) {
823 GtkBuilder* tab_builder;
827 open_in_background =
false;
833 NSLOG(netsurf, INFO,
"Tab contents UI builder init failed");
837 gtk_builder_connect_signals(tab_builder, NULL);
839 g = calloc(1,
sizeof(*g));
842 g_object_unref(tab_builder);
846 NSLOG(netsurf, INFO,
"Creating gui window %p for browser window %p",
856 if (existing != NULL) {
868 g_object_unref(tab_builder);
873 g->
container = GTK_WIDGET(gtk_builder_get_object(tab_builder,
"tabBox"));
874 g->
layout = GTK_LAYOUT(gtk_builder_get_object(tab_builder,
"layout"));
875 g->
grid = GTK_WIDGET(gtk_builder_get_object(tab_builder,
"tabContents"));
876 g->
status_bar = GTK_LABEL(gtk_builder_get_object(tab_builder,
"status_bar"));
877 g->
paned = GTK_PANED(gtk_builder_get_object(tab_builder,
"hpaned1"));
887 g_object_unref(tab_builder);
895 g_object_unref(tab_builder);
914 gtk_widget_add_events(GTK_WIDGET(g->
layout),
916 GDK_LEAVE_NOTIFY_MASK |
917 GDK_BUTTON_PRESS_MASK |
918 GDK_BUTTON_RELEASE_MASK |
919 GDK_POINTER_MOTION_MASK |
920 GDK_POINTER_MOTION_HINT_MASK |
922 GDK_KEY_RELEASE_MASK |
929 0, 0xffff, 0xffff, 0xffff);
935#define CONNECT(obj, sig, callback, ptr) \
936 g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
989 g_object_unref(tab_builder);
994 NSLOG(netsurf, WARNING,
"Unable to focus location input");
1004 NSLOG(netsurf, INFO,
"gui_window: %p", gw);
1006 assert(gw->
bw != NULL);
1036 struct bitmap *icon_bitmap = NULL;
1039 if (gw->
icon != NULL) {
1040 g_object_unref(gw->
icon);
1046 if (icon_bitmap != NULL) {
1047 NSLOG(netsurf, INFO,
"Using %p bitmap", icon_bitmap);
1052 if (gw->
icon == NULL) {
1053 NSLOG(netsurf, INFO,
"Using default favicon");
1073 *sy = (int)(gtk_adjustment_get_value(vadj));
1074 *sx = (int)(gtk_adjustment_get_value(hadj));
1089 gtk_widget_queue_draw_area(GTK_WIDGET(g->
layout),
1107 gtk_widget_queue_draw_area(GTK_WIDGET(g->
layout),
1126 gtk_widget_queue_draw(GTK_WIDGET(g->
layout));
1136 gtk_widget_queue_draw_area(GTK_WIDGET(g->
layout),
1170 gdouble vlower, vpage, vupper, hlower, hpage, hupper;
1171 gdouble x = (gdouble)
rect->
x0;
1172 gdouble y = (gdouble)
rect->
y0;
1177 g_object_get(vadj,
"page-size", &vpage,
"lower", &vlower,
"upper", &vupper, NULL);
1178 g_object_get(hadj,
"page-size", &hpage,
"lower", &hlower,
"upper", &hupper, NULL);
1183 if (x > (hupper - hpage)) {
1189 if (y > (vupper - vpage)) {
1193 gtk_adjustment_set_value(vadj, y);
1194 gtk_adjustment_set_value(hadj, x);
1205 gtk_layout_set_size(g->
layout, w, h);
1206 gtk_widget_queue_resize(g->
grid);
1214 GdkCursor *cursor = NULL;
1215 GdkCursorType cursortype;
1216 bool nullcursor =
false;
1225 cursortype = GDK_HAND2;
1228 cursortype = GDK_XTERM;
1231 cursortype = GDK_TOP_SIDE;
1234 cursortype = GDK_BOTTOM_SIDE;
1237 cursortype = GDK_LEFT_SIDE;
1240 cursortype = GDK_RIGHT_SIDE;
1243 cursortype = GDK_BOTTOM_LEFT_CORNER;
1246 cursortype = GDK_BOTTOM_RIGHT_CORNER;
1249 cursortype = GDK_TOP_LEFT_CORNER;
1252 cursortype = GDK_TOP_RIGHT_CORNER;
1255 cursortype = GDK_CROSS;
1258 cursortype = GDK_FLEUR;
1261 cursortype = GDK_WATCH;
1264 cursortype = GDK_QUESTION_ARROW;
1274 cursortype = GDK_WATCH;
1285 cursor = gdk_cursor_new_for_display(
1286 gtk_widget_get_display(
1299 int x,
int y,
int height,
1322 gtk_widget_grab_focus(GTK_WIDGET(g->
layout));
1338 GtkAllocation alloc;
1343 *
width = alloc.width;
1352 gtk_widget_grab_focus(GTK_WIDGET(g->
layout));
1363 GtkWidget *menu_item;
1379 while (option != NULL) {
1380 NSLOG(netsurf, INFO,
"Item %"PRIdPTR
" option %p text %s",
1381 item, option, option->
text);
1382 menu_item = gtk_check_menu_item_new_with_label(option->
text);
1384 gtk_check_menu_item_set_active(
1385 GTK_CHECK_MENU_ITEM(menu_item), TRUE);
1394 g_signal_connect(menu_item,
"toggled",
1397 gtk_menu_shell_append(GTK_MENU_SHELL(
select_menu), menu_item);
1421 dialog = gtk_file_chooser_dialog_new(
"Select File",
1423 GTK_FILE_CHOOSER_ACTION_OPEN,
1428 NSLOG(netsurf, INFO,
"*** open dialog: %p",
dialog);
1430 int ret = gtk_dialog_run(GTK_DIALOG(
dialog));
1431 NSLOG(netsurf, INFO,
"*** return value: %d", ret);
1432 if (ret == GTK_RESPONSE_ACCEPT) {
1435 filename = gtk_file_chooser_get_filename(
1436 GTK_FILE_CHOOSER(
dialog));
1443 gtk_widget_destroy(
dialog);
1538 if ((title != NULL) && (title[0] !=
'\0')) {
1556 GdkPixbuf *pixbuf = NULL;
1566 if (pixbuf != NULL) {
1567 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.
@ BROWSER_MOUSE_PRESS_1
button 1 pressed
@ BROWSER_MOUSE_CLICK_2
button 2 clicked.
@ BROWSER_MOUSE_PRESS_2
button 2 pressed
@ 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_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_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.