summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/browser.c37
-rw-r--r--desktop/gui.h58
-rw-r--r--desktop/gui_factory.c34
-rw-r--r--desktop/selection.c6
4 files changed, 88 insertions, 47 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 59cb4d44a..30aeead0c 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -1484,20 +1484,23 @@ static nserror browser_window_callback(hlcache_handle *c,
switch(event->data.dragsave.type) {
case CONTENT_SAVE_ORIG:
- gui_drag_save_object(GUI_SAVE_OBJECT_ORIG, save,
- root->window);
+ guit->window->drag_save_object(root->window, save,
+ GUI_SAVE_OBJECT_ORIG);
break;
+
case CONTENT_SAVE_NATIVE:
- gui_drag_save_object(GUI_SAVE_OBJECT_NATIVE, save,
- root->window);
+ guit->window->drag_save_object(root->window, save,
+ GUI_SAVE_OBJECT_NATIVE);
break;
+
case CONTENT_SAVE_COMPLETE:
- gui_drag_save_object(GUI_SAVE_COMPLETE, save,
- root->window);
+ guit->window->drag_save_object(root->window, save,
+ GUI_SAVE_COMPLETE);
break;
+
case CONTENT_SAVE_SOURCE:
- gui_drag_save_object(GUI_SAVE_SOURCE, save,
- root->window);
+ guit->window->drag_save_object(root->window, save,
+ GUI_SAVE_SOURCE);
break;
}
}
@@ -1563,7 +1566,7 @@ static nserror browser_window_callback(hlcache_handle *c,
case CONTENT_MSG_GADGETCLICK:
if (event->data.gadget_click.gadget->type == GADGET_FILE) {
- gui_file_gadget_open(bw->window, c,
+ guit->window->file_gadget_open(bw->window, c,
event->data.gadget_click.gadget);
}
@@ -2893,14 +2896,14 @@ void browser_window_mouse_click(struct browser_window *bw,
break;
default:
if (mouse & BROWSER_MOUSE_MOD_2) {
- if (mouse & BROWSER_MOUSE_DRAG_2)
- gui_drag_save_object(GUI_SAVE_OBJECT_NATIVE, c,
- bw->window);
- else if (mouse & BROWSER_MOUSE_DRAG_1)
- gui_drag_save_object(GUI_SAVE_OBJECT_ORIG, c,
- bw->window);
- }
- else if (mouse & (BROWSER_MOUSE_DRAG_1 |
+ if (mouse & BROWSER_MOUSE_DRAG_2) {
+ guit->window->drag_save_object(bw->window, c,
+ GUI_SAVE_OBJECT_NATIVE);
+ } else if (mouse & BROWSER_MOUSE_DRAG_1) {
+ guit->window->drag_save_object(bw->window, c,
+ GUI_SAVE_OBJECT_ORIG);
+ }
+ } else if (mouse & (BROWSER_MOUSE_DRAG_1 |
BROWSER_MOUSE_DRAG_2)) {
browser_window_page_drag_start(bw, x, y);
browser_window_set_pointer(bw, BROWSER_POINTER_MOVE);
diff --git a/desktop/gui.h b/desktop/gui.h
index 3f533d224..8d65893d0 100644
--- a/desktop/gui.h
+++ b/desktop/gui.h
@@ -157,8 +157,6 @@ struct gui_window_table {
/** set favicon */
void (*set_icon)(struct gui_window *g, hlcache_handle *icon);
-
-
/**
* Set the status bar of a browser window.
*
@@ -190,8 +188,6 @@ struct gui_window_table {
*/
void (*remove_caret)(struct gui_window *g);
-
-
/** start the navigation throbber. */
void (*start_throbber)(struct gui_window *g);
@@ -233,6 +229,19 @@ struct gui_window_table {
*/
void (*new_content)(struct gui_window *g);
+ /**
+ * Called when file chooser gadget is activated
+ */
+ void (*file_gadget_open)(struct gui_window *g, hlcache_handle *hl, struct form_control *gadget);
+
+ /** object dragged to window*/
+ void (*drag_save_object)(struct gui_window *g, hlcache_handle *c, gui_save_type type);
+
+ /** drag selection save */
+ void (*drag_save_selection)(struct gui_window *g, const char *selection);
+
+ /** selection started */
+ void (*start_selection)(struct gui_window *g);
};
/** Graphical user interface function table
@@ -280,17 +289,27 @@ void gui_download_window_error(struct gui_download_window *dw,
const char *error_msg);
void gui_download_window_done(struct gui_download_window *dw);
-void gui_drag_save_object(gui_save_type type, hlcache_handle *c,
- struct gui_window *g);
-void gui_drag_save_selection(struct gui_window *g, const char *selection);
-void gui_start_selection(struct gui_window *g);
-void gui_clear_selection(struct gui_window *g);
-void gui_file_gadget_open(struct gui_window *g, hlcache_handle *hl,
- struct form_control *gadget);
+
+/**
+ * Callback to translate resource to full url.
+ *
+ * Transforms a resource: path into a full URL. The returned URL
+ * is used as the target for a redirect. The caller takes ownership of
+ * the returned nsurl including unrefing it when finished with it.
+ *
+ * \param path The path of the resource to locate.
+ * \return A string containing the full URL of the target object or
+ * NULL if no suitable resource can be found.
+ */
+nsurl* gui_get_resource_url(const char *path);
+
void gui_launch_url(const char *url);
+void gui_create_form_select_menu(struct browser_window *bw,
+ struct form_control *control);
+
/**
* Core asks front end for clipboard contents.
*
@@ -304,6 +323,7 @@ typedef struct nsnsclipboard_styles {
plot_font_style_t style; /**< Style to give text run */
} nsclipboard_styles;
+
/**
* Core tells front end to put given text in clipboard
*
@@ -317,27 +337,11 @@ void gui_set_clipboard(const char *buffer, size_t length,
-void gui_create_form_select_menu(struct browser_window *bw,
- struct form_control *control);
-
-
struct ssl_cert_info;
void gui_cert_verify(nsurl *url, const struct ssl_cert_info *certs,
unsigned long num, nserror (*cb)(bool proceed, void *pw),
void *cbpw);
-/**
- * Callback to translate resource to full url.
- *
- * Transforms a resource: path into a full URL. The returned URL
- * is used as the target for a redirect. The caller takes ownership of
- * the returned nsurl including unrefing it when finished with it.
- *
- * \param path The path of the resource to locate.
- * \return A string containing the full URL of the target object or
- * NULL if no suitable resource can be found.
- */
-nsurl* gui_get_resource_url(const char *path);
#endif
diff --git a/desktop/gui_factory.c b/desktop/gui_factory.c
index e03e7dae0..8ebf3515a 100644
--- a/desktop/gui_factory.c
+++ b/desktop/gui_factory.c
@@ -85,6 +85,28 @@ static void gui_default_window_remove_caret(struct gui_window *g)
{
}
+static void gui_default_window_file_gadget_open(struct gui_window *g,
+ hlcache_handle *hl,
+ struct form_control *gadget)
+{
+}
+
+static void gui_default_window_drag_save_object(struct gui_window *g,
+ hlcache_handle *c,
+ gui_save_type type)
+{
+}
+
+static void gui_default_window_drag_save_selection(struct gui_window *g,
+ const char *selection)
+{
+}
+
+static void gui_default_window_start_selection(struct gui_window *g)
+{
+}
+
+
/** verify window table is valid */
static nserror verify_window_register(struct gui_window_table *gwt)
{
@@ -163,6 +185,18 @@ static nserror verify_window_register(struct gui_window_table *gwt)
if (gwt->scroll_start == NULL) {
gwt->scroll_start = gui_default_window_scroll_start;
}
+ if (gwt->file_gadget_open == NULL) {
+ gwt->file_gadget_open = gui_default_window_file_gadget_open;
+ }
+ if (gwt->drag_save_object == NULL) {
+ gwt->drag_save_object = gui_default_window_drag_save_object;
+ }
+ if (gwt->drag_save_selection == NULL) {
+ gwt->drag_save_selection = gui_default_window_drag_save_selection;
+ }
+ if (gwt->start_selection == NULL) {
+ gwt->start_selection = gui_default_window_start_selection;
+ }
return NSERROR_OK;
}
diff --git a/desktop/selection.c b/desktop/selection.c
index 13a1293e3..ca383c179 100644
--- a/desktop/selection.c
+++ b/desktop/selection.c
@@ -274,7 +274,7 @@ bool selection_click(struct selection *s, browser_mouse_state mouse,
(modkeys && (mouse & BROWSER_MOUSE_DRAG_2)))) {
/* drag-saving selection */
char *sel = selection_get_copy(s);
- gui_drag_save_selection(top->window, sel);
+ guit->window->drag_save_selection(top->window, sel);
free(sel);
}
else if (!modkeys) {
@@ -293,7 +293,7 @@ bool selection_click(struct selection *s, browser_mouse_state mouse,
s->drag_state = DRAG_END;
- gui_start_selection(top->window);
+ guit->window->start_selection(top->window);
}
else if (mouse & BROWSER_MOUSE_DRAG_2) {
@@ -312,7 +312,7 @@ bool selection_click(struct selection *s, browser_mouse_state mouse,
s->drag_state = DRAG_START;
}
- gui_start_selection(top->window);
+ guit->window->start_selection(top->window);
}
else if (mouse & BROWSER_MOUSE_CLICK_2) {