summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--frontends/gtk/Makefile2
-rw-r--r--frontends/gtk/gui.c2
-rw-r--r--frontends/gtk/treeview.c631
-rw-r--r--frontends/gtk/treeview.h43
4 files changed, 1 insertions, 677 deletions
diff --git a/frontends/gtk/Makefile b/frontends/gtk/Makefile
index 71dec1e69..f9273f1db 100644
--- a/frontends/gtk/Makefile
+++ b/frontends/gtk/Makefile
@@ -159,7 +159,7 @@ endif
# S_FRONTEND are sources purely for the GTK frontend
S_FRONTEND := gui.c schedule.c layout_pango.c bitmap.c plotters.c \
- treeview.c scaffolding.c gdk.c completion.c login.c throbber.c \
+ scaffolding.c gdk.c completion.c login.c throbber.c \
selection.c global_history.c window.c fetch.c download.c menu.c \
print.c search.c tabs.c toolbar.c gettext.c \
compat.c cookies.c hotlist.c viewdata.c viewsource.c \
diff --git a/frontends/gtk/gui.c b/frontends/gtk/gui.c
index 61560ddab..d128dc24f 100644
--- a/frontends/gtk/gui.c
+++ b/frontends/gtk/gui.c
@@ -49,7 +49,6 @@
#include "desktop/save_complete.h"
#include "desktop/save_pdf.h"
#include "desktop/searchweb.h"
-#include "desktop/tree.h"
#include "gtk/compat.h"
#include "gtk/warn.h"
@@ -61,7 +60,6 @@
#include "gtk/global_history.h"
#include "gtk/hotlist.h"
#include "gtk/throbber.h"
-#include "gtk/treeview.h"
#include "gtk/scaffolding.h"
#include "gtk/window.h"
#include "gtk/schedule.h"
diff --git a/frontends/gtk/treeview.c b/frontends/gtk/treeview.c
deleted file mode 100644
index e2b1c4259..000000000
--- a/frontends/gtk/treeview.c
+++ /dev/null
@@ -1,631 +0,0 @@
-/*
- * Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
- * Copyright 2009 Paul Blokus <paul_pl@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
- * Generic tree handling (implementation).
- */
-
-#include <stdlib.h>
-#include <assert.h>
-#include <stdio.h>
-#include <limits.h>
-#include <string.h>
-#include <math.h>
-#include <gtk/gtk.h>
-#include <gdk/gdkkeysyms.h>
-
-#include "utils/log.h"
-#include "utils/utf8.h"
-#include "desktop/tree.h"
-#include "netsurf/plotters.h"
-
-#include "gtk/warn.h"
-#include "gtk/compat.h"
-#include "gtk/gui.h"
-#include "gtk/plotters.h"
-#include "gtk/treeview.h"
-
-struct nsgtk_treeview {
- GtkWindow *window;
- GtkScrolledWindow *scrolled;
- GtkDrawingArea *drawing_area;
- GtkIMContext *input_method;
- bool mouse_pressed;
- int mouse_pressed_x;
- int mouse_pressed_y;
- int last_x, last_y;
- browser_mouse_state mouse_state;
- struct tree *tree;
- unsigned int tree_flags; /* flags used with tree creation */
- struct sslcert_session_data *ssl_data; /**< SSL data when tree_flags are TREE_SSLCERT */
-};
-
-void nsgtk_treeview_destroy(struct nsgtk_treeview *tv)
-{
- if (tv->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tv->ssl_data;
- }
-
- tree_delete(tv->tree);
- g_object_unref(tv->input_method);
- gtk_widget_destroy(GTK_WIDGET(tv->window));
- free(tv);
-}
-
-struct tree *nsgtk_treeview_get_tree(struct nsgtk_treeview *tv)
-{
- return tv->tree;
-}
-
-static void nsgtk_tree_redraw_request(int x, int y, int width, int height, void *data)
-{
- struct nsgtk_treeview *tw = data;
-
- gtk_widget_queue_draw_area(GTK_WIDGET(tw->drawing_area),
- x, y, width, height);
-}
-
-
-/**
- * Updates the tree owner following a tree resize
- *
- * \param tree the tree to update the owner of
- * \param width The width to resize to.
- * \param height The height to resize to.
- * \param data The treeview resize.
- */
-static void nsgtk_tree_resized(struct tree *tree, int width, int height, void *data)
-{
- struct nsgtk_treeview *tw = data;
-
- gtk_widget_set_size_request(GTK_WIDGET(tw->drawing_area),
- width, height);
- return;
-}
-
-/**
- * Scrolls the tree to make an element visible
- *
- * \param y Y coordinate of the element
- * \param height height of the element
- * \param data user data assigned to the tree on tree creation
- */
-static void nsgtk_tree_scroll_visible(int y, int height, void *data)
-{
- int y0, y1;
- gdouble page;
- struct nsgtk_treeview *tw = data;
- GtkAdjustment *vadj = gtk_scrolled_window_get_vadjustment(tw->scrolled);
-
- assert(vadj);
-
- g_object_get(vadj, "page-size", &page, NULL);
-
- y0 = (int)(gtk_adjustment_get_value(vadj));
- y1 = y0 + page;
-
- if ((y >= y0) && (y + height <= y1))
- return;
- if (y + height > y1)
- y0 = y0 + (y + height - y1);
- if (y < y0)
- y0 = y;
- gtk_adjustment_set_value(vadj, y0);
-}
-
-
-/**
- * Retrieves the dimensions of the window with the tree
- *
- * \param data user data assigned to the tree on tree creation
- * \param width will be updated to window width if not NULL
- * \param height will be updated to window height if not NULL
- */
-static void nsgtk_tree_get_window_dimensions(int *width, int *height, void *data)
-{
- struct nsgtk_treeview *tw = data;
- GtkAdjustment *vadj;
- GtkAdjustment *hadj;
- gdouble page;
-
- if (width != NULL) {
- hadj = gtk_scrolled_window_get_hadjustment(tw->scrolled);
- g_object_get(hadj, "page-size", &page, NULL);
- *width = page;
- }
-
- if (height != NULL) {
- vadj = gtk_scrolled_window_get_vadjustment(tw->scrolled);
- g_object_get(vadj, "page-size", &page, NULL);
- *height = page;
- }
-}
-
-#if GTK_CHECK_VERSION(3,0,0)
-
-static gboolean
-nsgtk_tree_window_draw_event(GtkWidget *widget, cairo_t *cr, gpointer data)
-{
- struct nsgtk_treeview *tv = (struct nsgtk_treeview *)data;
- struct redraw_context ctx = {
- .interactive = true,
- .background_images = true,
- .plot = &nsgtk_plotters
- };
- double x1;
- double y1;
- double x2;
- double y2;
-
- current_widget = widget;
- current_cr = cr;
-
- cairo_clip_extents(cr, &x1, &y1, &x2, &y2);
-
- if (tv->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tv->ssl_data;
- }
-
- tree_draw(tv->tree, 0, 0, x1, y1, x2 - x1, y2 - y1, &ctx);
-
- current_widget = NULL;
-
- return FALSE;
-}
-
-#else
-
-/* signal handler functions for a tree window */
-static gboolean
-nsgtk_tree_window_draw_event(GtkWidget *widget,
- GdkEventExpose *event,
- gpointer g)
-{
- struct nsgtk_treeview *tv = (struct nsgtk_treeview *)g;
- struct redraw_context ctx = {
- .interactive = true,
- .background_images = true,
- .plot = &nsgtk_plotters
- };
- int x, y, width, height;
-
- x = event->area.x;
- y = event->area.y;
- width = event->area.width;
- height = event->area.height;
-
- current_widget = widget;
- current_cr = gdk_cairo_create(nsgtk_widget_get_window(widget));
-
- if (tv->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tv->ssl_data;
- }
-
- tree_draw(tv->tree, 0, 0, x, y, width, height, &ctx);
-
- current_widget = NULL;
- cairo_destroy(current_cr);
-
- return FALSE;
-}
-
-#endif
-
-void nsgtk_tree_window_hide(GtkWidget *widget, gpointer g)
-{
-}
-
-static gboolean
-nsgtk_tree_window_button_press_event(GtkWidget *widget,
- GdkEventButton *event, gpointer g)
-{
- struct nsgtk_treeview *tw = g;
-
- gtk_im_context_reset(tw->input_method);
- gtk_widget_grab_focus(GTK_WIDGET(tw->drawing_area));
-
- tw->mouse_pressed = true;
- tw->mouse_pressed_x = event->x;
- tw->mouse_pressed_y = event->y;
-
- if (event->type == GDK_2BUTTON_PRESS) {
- tw->mouse_state = BROWSER_MOUSE_DOUBLE_CLICK;
- }
-
- switch (event->button) {
- case 1: tw->mouse_state |= BROWSER_MOUSE_PRESS_1; break;
- case 2: tw->mouse_state |= BROWSER_MOUSE_PRESS_2; break;
- }
- /* Handle the modifiers too */
- if (event->state & GDK_SHIFT_MASK)
- tw->mouse_state |= BROWSER_MOUSE_MOD_1;
- if (event->state & GDK_CONTROL_MASK)
- tw->mouse_state |= BROWSER_MOUSE_MOD_2;
- if (event->state & GDK_MOD1_MASK)
- tw->mouse_state |= BROWSER_MOUSE_MOD_3;
-
- /* Record where we pressed, for use when determining whether to start
- * a drag in motion notify events. */
- tw->last_x = event->x;
- tw->last_y = event->y;
-
- if (tw->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tw->ssl_data;
- }
-
- tree_mouse_action(tw->tree, tw->mouse_state, event->x, event->y);
-
- return TRUE;
-}
-
-static gboolean
-nsgtk_tree_window_button_release_event(GtkWidget *widget,
- GdkEventButton *event, gpointer g)
-{
- bool shift = event->state & GDK_SHIFT_MASK;
- bool ctrl = event->state & GDK_CONTROL_MASK;
- bool alt = event->state & GDK_MOD1_MASK;
- struct nsgtk_treeview *tw = (struct nsgtk_treeview *) g;
- struct tree *tree = tw->tree;
-
- /* We consider only button 1 clicks as double clicks.
- * If the mouse state is PRESS then we are waiting for a release to emit
- * a click event, otherwise just reset the state to nothing*/
- if (tw->mouse_state & BROWSER_MOUSE_DOUBLE_CLICK) {
-
- if (tw->mouse_state & BROWSER_MOUSE_PRESS_1)
- tw->mouse_state ^= BROWSER_MOUSE_PRESS_1 |
- BROWSER_MOUSE_CLICK_1;
- else if (tw->mouse_state & BROWSER_MOUSE_PRESS_2)
- tw->mouse_state ^= (BROWSER_MOUSE_PRESS_2 |
- BROWSER_MOUSE_CLICK_2 |
- BROWSER_MOUSE_DOUBLE_CLICK);
-
- } else if (tw->mouse_state & BROWSER_MOUSE_PRESS_1) {
- tw->mouse_state ^= (BROWSER_MOUSE_PRESS_1 |
- BROWSER_MOUSE_CLICK_1);
- } else if (tw->mouse_state & BROWSER_MOUSE_PRESS_2) {
- tw->mouse_state ^= (BROWSER_MOUSE_PRESS_2 |
- BROWSER_MOUSE_CLICK_2);
- } else if (tw->mouse_state & BROWSER_MOUSE_HOLDING_1) {
- tw->mouse_state ^= (BROWSER_MOUSE_HOLDING_1 |
- BROWSER_MOUSE_DRAG_ON);
- } else if (tw->mouse_state & BROWSER_MOUSE_HOLDING_2) {
- tw->mouse_state ^= (BROWSER_MOUSE_HOLDING_2 |
- BROWSER_MOUSE_DRAG_ON);
- }
-
- /* Handle modifiers being removed */
- if (tw->mouse_state & BROWSER_MOUSE_MOD_1 && !shift)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_1;
- if (tw->mouse_state & BROWSER_MOUSE_MOD_2 && !ctrl)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_2;
- if (tw->mouse_state & BROWSER_MOUSE_MOD_3 && !alt)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_3;
-
- if (tw->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tw->ssl_data;
- }
-
- if (tw->mouse_state &
- ~(BROWSER_MOUSE_MOD_1 |
- BROWSER_MOUSE_MOD_2 |
- BROWSER_MOUSE_MOD_3)) {
- tree_mouse_action(tree, tw->mouse_state,
- event->x, event->y);
- } else {
- tree_drag_end(tree, tw->mouse_state,
- tw->mouse_pressed_x,
- tw->mouse_pressed_y,
- event->x, event->y);
- }
-
- tw->mouse_state = 0;
- tw->mouse_pressed = false;
-
- return TRUE;
-}
-
-static gboolean
-nsgtk_tree_window_motion_notify_event(GtkWidget *widget,
- GdkEventMotion *event, gpointer g)
-{
- bool shift = event->state & GDK_SHIFT_MASK;
- bool ctrl = event->state & GDK_CONTROL_MASK;
- bool alt = event->state & GDK_MOD1_MASK;
- struct nsgtk_treeview *tw = (struct nsgtk_treeview *) g;
- struct tree *tree = tw->tree;
-
- if (tw->mouse_pressed == false)
- return TRUE;
-
- if ((fabs(event->x - tw->last_x) < 5.0) &&
- (fabs(event->y - tw->last_y) < 5.0)) {
- /* Mouse hasn't moved far enough from press coordinate
- * for this to be considered a drag.
- */
- return FALSE;
- } else {
- /* This is a drag, ensure it's always treated as such,
- * even if we drag back over the press location.
- */
- tw->last_x = INT_MIN;
- tw->last_y = INT_MIN;
- }
-
- if (tw->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tw->ssl_data;
- }
-
- if (tw->mouse_state & BROWSER_MOUSE_PRESS_1) {
- /* Start button 1 drag */
- tree_mouse_action(tree, BROWSER_MOUSE_DRAG_1,
- tw->mouse_pressed_x, tw->mouse_pressed_y);
- /* Replace PRESS with HOLDING and declare drag in progress */
- tw->mouse_state ^= (BROWSER_MOUSE_PRESS_1 |
- BROWSER_MOUSE_HOLDING_1);
- tw->mouse_state |= BROWSER_MOUSE_DRAG_ON;
- return TRUE;
- }
- else if (tw->mouse_state & BROWSER_MOUSE_PRESS_2){
- /* Start button 2s drag */
- tree_mouse_action(tree, BROWSER_MOUSE_DRAG_2,
- tw->mouse_pressed_x, tw->mouse_pressed_y);
- /* Replace PRESS with HOLDING and declare drag in progress */
- tw->mouse_state ^= (BROWSER_MOUSE_PRESS_2 |
- BROWSER_MOUSE_HOLDING_2);
- tw->mouse_state |= BROWSER_MOUSE_DRAG_ON;
- return TRUE;
- }
-
- /* Handle modifiers being removed */
- if (tw->mouse_state & BROWSER_MOUSE_MOD_1 && !shift)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_1;
- if (tw->mouse_state & BROWSER_MOUSE_MOD_2 && !ctrl)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_2;
- if (tw->mouse_state & BROWSER_MOUSE_MOD_3 && !alt)
- tw->mouse_state ^= BROWSER_MOUSE_MOD_3;
-
- if (tw->mouse_state & (BROWSER_MOUSE_HOLDING_1 |
- BROWSER_MOUSE_HOLDING_2))
- tree_mouse_action(tree, tw->mouse_state, event->x,
- event->y);
-
- return TRUE;
-}
-
-
-static gboolean
-nsgtk_tree_window_keypress_event(GtkWidget *widget, GdkEventKey *event,
- gpointer g)
-{
- struct nsgtk_treeview *tw = (struct nsgtk_treeview *) g;
- struct tree *tree = tw->tree;
- uint32_t nskey;
- double value;
- GtkAdjustment *vscroll;
- GtkAdjustment *hscroll;
- GtkAdjustment *scroll = NULL;
- gdouble hpage, vpage;
-
- if (gtk_im_context_filter_keypress(tw->input_method, event))
- return TRUE;
-
- nskey = gtk_gui_gdkkey_to_nskey(event);
-
- if (tw->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tw->ssl_data;
- }
-
- if (tree_keypress(tree, nskey) == true) {
- return TRUE;
- }
-
- vscroll = gtk_scrolled_window_get_vadjustment(tw->scrolled);
- hscroll = gtk_scrolled_window_get_hadjustment(tw->scrolled);
- g_object_get(vscroll, "page-size", &vpage, NULL);
- g_object_get(hscroll, "page-size", &hpage, NULL);
-
- switch (event->keyval) {
- case GDK_KEY(Home):
- case GDK_KEY(KP_Home):
- scroll = vscroll;
- value = nsgtk_adjustment_get_lower(scroll);
- break;
-
- case GDK_KEY(End):
- case GDK_KEY(KP_End):
- scroll = vscroll;
- value = nsgtk_adjustment_get_upper(scroll) - vpage;
- if (value < nsgtk_adjustment_get_lower(scroll))
- value = nsgtk_adjustment_get_lower(scroll);
- break;
-
- case GDK_KEY(Left):
- case GDK_KEY(KP_Left):
- scroll = hscroll;
- value = gtk_adjustment_get_value(scroll) -
- nsgtk_adjustment_get_step_increment(scroll);
- if (value < nsgtk_adjustment_get_lower(scroll))
- value = nsgtk_adjustment_get_lower(scroll);
- break;
-
- case GDK_KEY(Up):
- case GDK_KEY(KP_Up):
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) -
- nsgtk_adjustment_get_step_increment(scroll);
- if (value < nsgtk_adjustment_get_lower(scroll))
- value = nsgtk_adjustment_get_lower(scroll);
- break;
-
- case GDK_KEY(Right):
- case GDK_KEY(KP_Right):
- scroll = hscroll;
- value = gtk_adjustment_get_value(scroll) +
- nsgtk_adjustment_get_step_increment(scroll);
- if (value > nsgtk_adjustment_get_upper(scroll) - hpage)
- value = nsgtk_adjustment_get_upper(scroll) - hpage;
- break;
-
- case GDK_KEY(Down):
- case GDK_KEY(KP_Down):
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) +
- nsgtk_adjustment_get_step_increment(scroll);
- if (value > nsgtk_adjustment_get_upper(scroll) - vpage)
- value = nsgtk_adjustment_get_upper(scroll) - vpage;
- break;
-
- case GDK_KEY(Page_Up):
- case GDK_KEY(KP_Page_Up):
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) -
- nsgtk_adjustment_get_page_increment(scroll);
-
- if (value < nsgtk_adjustment_get_lower(scroll))
- value = nsgtk_adjustment_get_lower(scroll);
-
- break;
-
- case GDK_KEY(Page_Down):
- case GDK_KEY(KP_Page_Down):
- scroll = vscroll;
- value = gtk_adjustment_get_value(scroll) +
- nsgtk_adjustment_get_page_increment(scroll);
-
- if (value > nsgtk_adjustment_get_upper(scroll) - vpage)
- value = nsgtk_adjustment_get_upper(scroll) - vpage;
- break;
-
- default:
- break;
- }
-
- if (scroll != NULL)
- gtk_adjustment_set_value(scroll, value);
-
- return TRUE;
-}
-
-static gboolean
-nsgtk_tree_window_keyrelease_event(GtkWidget *widget, GdkEventKey *event,
- gpointer g)
-{
- struct nsgtk_treeview *tw = (struct nsgtk_treeview *) g;
-
- return gtk_im_context_filter_keypress(tw->input_method, event);
-}
-
-static void
-nsgtk_tree_window_input_method_commit(GtkIMContext *ctx,
- const gchar *str, gpointer data)
-{
- struct nsgtk_treeview *tw = (struct nsgtk_treeview *) data;
- size_t len = strlen(str), offset = 0;
-
- if (tw->tree_flags == TREE_SSLCERT) {
- ssl_current_session = tw->ssl_data;
- }
-
- while (offset < len) {
- uint32_t nskey = utf8_to_ucs4(str + offset, len - offset);
-
- tree_keypress(tw->tree, nskey);
-
- offset = utf8_next(str, len, offset);
- }
-}
-
-
-static const struct treeview_table nsgtk_tree_callbacks = {
- .redraw_request = nsgtk_tree_redraw_request,
- .resized = nsgtk_tree_resized,
- .scroll_visible = nsgtk_tree_scroll_visible,
- .get_window_dimensions = nsgtk_tree_get_window_dimensions
-};
-
-struct nsgtk_treeview *
-nsgtk_treeview_create(unsigned int flags,
- GtkWindow *window,
- GtkScrolledWindow *scrolled,
- GtkDrawingArea *drawing_area,
- struct sslcert_session_data *ssl_data)
-{
- struct nsgtk_treeview *tv;
-
- assert(drawing_area != NULL);
-
- tv = malloc(sizeof(struct nsgtk_treeview));
- if (tv == NULL) {
- LOG("malloc failed");
- nsgtk_warning("NoMemory", 0);
- return NULL;
- }
-
- tv->tree_flags = flags;
- if (tv->tree_flags == TREE_SSLCERT) {
- tv->ssl_data = ssl_data;
- ssl_current_session = tv->ssl_data;
- }
-
- tv->window = window;
- tv->scrolled = scrolled;
- tv->drawing_area = drawing_area;
- tv->input_method = gtk_im_multicontext_new();
- tv->tree = tree_create(flags, &nsgtk_tree_callbacks, tv);
- tv->mouse_state = 0;
- tv->mouse_pressed = false;
-
- nsgtk_widget_override_background_color(GTK_WIDGET(drawing_area),
- GTK_STATE_NORMAL,
- 0, 0xffff, 0xffff, 0xffff);
-
- nsgtk_connect_draw_event(GTK_WIDGET(drawing_area), G_CALLBACK(nsgtk_tree_window_draw_event), tv);
-
-#define CONNECT(obj, sig, callback, ptr) \
- g_signal_connect(G_OBJECT(obj), (sig), G_CALLBACK(callback), (ptr))
- CONNECT(drawing_area, "button-press-event",
- nsgtk_tree_window_button_press_event,
- tv);
- CONNECT(drawing_area, "button-release-event",
- nsgtk_tree_window_button_release_event,
- tv);
- CONNECT(drawing_area, "motion-notify-event",
- nsgtk_tree_window_motion_notify_event,
- tv);
- CONNECT(drawing_area, "key-press-event",
- nsgtk_tree_window_keypress_event,
- tv);
- CONNECT(drawing_area, "key-release-event",
- nsgtk_tree_window_keyrelease_event,
- tv);
-
-
- /* input method */
- gtk_im_context_set_client_window(tv->input_method,
- nsgtk_widget_get_window(GTK_WIDGET(tv->window)));
- gtk_im_context_set_use_preedit(tv->input_method, FALSE);
- /* input method signals */
- CONNECT(tv->input_method, "commit",
- nsgtk_tree_window_input_method_commit,
- tv);
-
- return tv;
-}
diff --git a/frontends/gtk/treeview.h b/frontends/gtk/treeview.h
deleted file mode 100644
index 70f2c5315..000000000
--- a/frontends/gtk/treeview.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
- * Copyright 2009 Paul Blokus <paul_pl@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
- * Generic tree handling.
- */
-
-#ifndef __NSGTK_TREEVIEW_H__
-#define __NSGTK_TREEVIEW_H__
-
-struct nsgtk_treeview;
-struct sslcert_session_data;
-
-/**
- * Create a treeview within a gtk widget.
- *
- * \param flags type of treeview.
- */
-struct nsgtk_treeview *nsgtk_treeview_create(unsigned int flags, GtkWindow *window, GtkScrolledWindow *scrolled, GtkDrawingArea *drawing_area, struct sslcert_session_data *ssl_data);
-
-void nsgtk_treeview_destroy(struct nsgtk_treeview *tv);
-
-struct tree *nsgtk_treeview_get_tree(struct nsgtk_treeview *tv);
-
-void nsgtk_tree_window_hide(GtkWidget *widget, gpointer g);
-
-#endif /*__NSGTK_TREEVIEW_H__*/