summaryrefslogtreecommitdiff
path: root/desktop/local_history.c
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2017-02-16 15:18:29 +0000
committerVincent Sanders <vince@kyllikki.org>2017-02-17 09:06:25 +0000
commitc60cb335f21b602eeee84c7865db4b2bbfe87cfe (patch)
tree5155ccefc82a8b201974b32a2cf1e1afb226d750 /desktop/local_history.c
parent9d0943b8e561dd2e5449cd9d53d8b5c2f439442d (diff)
downloadnetsurf-c60cb335f21b602eeee84c7865db4b2bbfe87cfe.tar.gz
netsurf-c60cb335f21b602eeee84c7865db4b2bbfe87cfe.tar.bz2
add local history corewindow API
Diffstat (limited to 'desktop/local_history.c')
-rw-r--r--desktop/local_history.c135
1 files changed, 135 insertions, 0 deletions
diff --git a/desktop/local_history.c b/desktop/local_history.c
new file mode 100644
index 000000000..05e4b5e18
--- /dev/null
+++ b/desktop/local_history.c
@@ -0,0 +1,135 @@
+/*
+ * Copyright 2017 Vincent Sanders <vince@netsurf-browser.org>
+ *
+ * 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
+ * Local history viewer implementation
+ */
+
+#include <stdlib.h>
+
+#include "netsurf/types.h"
+#include "netsurf/core_window.h"
+
+#include "desktop/browser_history.h"
+#include "desktop/local_history.h"
+
+struct local_history_session {
+ struct browser_window *bw;
+ struct core_window_callback_table *cw_t;
+ void *core_window_handle;
+};
+
+/* exported interface documented in desktop/local_history.h */
+nserror local_history_init(struct core_window_callback_table *cw_t,
+ void *core_window_handle,
+ struct browser_window *bw,
+ struct local_history_session **session)
+{
+ struct local_history_session *nses;
+
+ nses = calloc(1, sizeof(struct local_history_session));
+ if (nses == NULL) {
+ return NSERROR_NOMEM;
+ }
+
+ nses->cw_t = cw_t;
+ nses->core_window_handle = core_window_handle;
+
+ local_history_set(nses, bw);
+
+ *session = nses;
+ return NSERROR_OK;
+}
+
+/* exported interface documented in desktop/local_history.h */
+nserror local_history_fini(struct local_history_session *session)
+{
+ free(session);
+
+ return NSERROR_OK;
+}
+
+
+/* exported interface documented in desktop/local_history.h */
+nserror
+local_history_redraw(struct local_history_session *session,
+ int x,
+ int y,
+ struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ if (session->bw != NULL) {
+ browser_window_history_redraw_rectangle(session->bw,
+ clip->x0, clip->y0, clip->x1, clip->y1, x, y, ctx);
+ }
+ return NSERROR_OK;
+}
+
+/* exported interface documented in desktop/local_history.h */
+void
+local_history_mouse_action(struct local_history_session *session,
+ enum browser_mouse_state mouse,
+ int x,
+ int y)
+{
+ if (mouse & BROWSER_MOUSE_PRESS_1) {
+ browser_window_history_click(session->bw, x, y, false);
+ }
+}
+
+/* exported interface documented in desktop/local_history.h */
+bool
+local_history_keypress(struct local_history_session *session, uint32_t key)
+{
+ return false;
+}
+
+/* exported interface documented in desktop/local_history.h */
+nserror
+local_history_set(struct local_history_session *session,
+ struct browser_window *bw)
+{
+ int width;
+ int height;
+
+ session->bw = bw;
+ if (bw != NULL) {
+ browser_window_history_size(session->bw, &width, &height);
+
+ session->cw_t->update_size(session->core_window_handle,
+ width, height);
+ }
+
+ return NSERROR_OK;
+}
+
+
+/* exported interface documented in desktop/local_history.h */
+nserror
+local_history_get_size(struct local_history_session *session,
+ int *width,
+ int *height)
+{
+
+ browser_window_history_size(session->bw, width, height);
+ *width += 20;
+ *height += 20;
+
+ return NSERROR_OK;
+}