summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShaun McCance <shaunm@src.gnome.org>2004-10-18 07:03:53 +0000
committerShaun McCance <shaunm@src.gnome.org>2004-10-18 07:03:53 +0000
commit6a344073489424259e754687812a6da3f0d4f1bd (patch)
tree603cceaca259a175f8c361c737e347f1cb30865f
parentecbb0fa95f3442c72591be37e8665b1cdfd0cb5d (diff)
downloadyelp-6a344073489424259e754687812a6da3f0d4f1bd.tar.gz
- Patch from Don Scorgie to make Copy work. Yay!
* src/Makefile.am: * src/yelp-gecko-utils.cpp: * src/yelp-gecko-utils.h: * src/yelp-html-gecko.c: * src/yelp-html.h: * src/yelp-window.c: - Patch from Don Scorgie to make Copy work. Yay!
-rw-r--r--ChangeLog10
-rw-r--r--src/Makefile.am1
-rw-r--r--src/yelp-gecko-utils.cpp13
-rw-r--r--src/yelp-gecko-utils.h2
-rw-r--r--src/yelp-html-gecko.c12
-rw-r--r--src/yelp-html.h2
-rw-r--r--src/yelp-window.c3
7 files changed, 43 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 8c7e4288..a4170718 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
2004-10-18 Shaun McCance <shaunm@gnome.org>
+ * src/Makefile.am:
+ * src/yelp-gecko-utils.cpp:
+ * src/yelp-gecko-utils.h:
+ * src/yelp-html-gecko.c:
+ * src/yelp-html.h:
+ * src/yelp-window.c:
+ - Patch from Don Scorgie to make Copy work. Yay!
+
+2004-10-18 Shaun McCance <shaunm@gnome.org>
+
* configure.in:
- Minor changes
diff --git a/src/Makefile.am b/src/Makefile.am
index 83af6b0c..83bc6c84 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -12,6 +12,7 @@ INCLUDES = \
-I$(MOZILLA_INCLUDE_ROOT)/pref \
-I$(MOZILLA_INCLUDE_ROOT)/webbrwsr \
-I$(MOZILLA_INCLUDE_ROOT)/string \
+ -I$(MOZILLA_INCLUDE_ROOT)/webshell \
-include $(MOZILLA_INCLUDE_ROOT)/mozilla-config.h \
-DG_LOG_DOMAIN=\"Yelp\" \
-DPREFIX=\""$(prefix)"\" \
diff --git a/src/yelp-gecko-utils.cpp b/src/yelp-gecko-utils.cpp
index f02d7eee..afd8333f 100644
--- a/src/yelp-gecko-utils.cpp
+++ b/src/yelp-gecko-utils.cpp
@@ -24,6 +24,7 @@
#include <gtkmozembed_internal.h>
#include <nsIWebBrowser.h>
#include <nsIWebBrowserFind.h>
+#include <nsIClipboardCommands.h>
#include <nsCOMPtr.h>
#include <nsIInterfaceRequestorUtils.h>
#include <nsReadableUtils.h>
@@ -144,3 +145,15 @@ yelp_gecko_find (GtkMozEmbed *embed,
return didFind;
}
+
+extern "C" gboolean
+yelp_gecko_copy_selection (GtkMozEmbed *embed)
+{
+ nsCOMPtr<nsIWebBrowser> webBrowser;
+ gtk_moz_embed_get_nsIWebBrowser (embed, getter_AddRefs(webBrowser));
+
+ nsCOMPtr<nsIClipboardCommands> clip (do_GetInterface(webBrowser));
+ NS_ENSURE_TRUE (clip, NS_ERROR_FAILURE);
+
+ clip->CopySelection();
+}
diff --git a/src/yelp-gecko-utils.h b/src/yelp-gecko-utils.h
index b2c61eaf..9fc7511b 100644
--- a/src/yelp-gecko-utils.h
+++ b/src/yelp-gecko-utils.h
@@ -36,6 +36,8 @@ gboolean yelp_gecko_find (GtkMozEmbed *html,
gboolean wrap,
gboolean forward);
+gboolean yelp_gecko_copy_selection (GtkMozEmbed *html);
+
G_END_DECLS
#endif /* __YELP_GECKO_UTILS_H__ */
diff --git a/src/yelp-html-gecko.c b/src/yelp-html-gecko.c
index 632340cf..6e7927af 100644
--- a/src/yelp-html-gecko.c
+++ b/src/yelp-html-gecko.c
@@ -289,3 +289,15 @@ html_set_fonts (void)
yelp_gecko_set_font (YELP_FONT_FIXED, font);
g_free (font);
}
+
+void
+yelp_html_copy_selection (YelpHtml *html)
+{
+ YelpHtmlPriv *priv;
+
+ g_return_if_fail (html != NULL);
+
+ priv = html->priv;
+
+ yelp_gecko_copy_selection (GTK_MOZ_EMBED (priv->embed));
+}
diff --git a/src/yelp-html.h b/src/yelp-html.h
index 9e6af004..f4eaf188 100644
--- a/src/yelp-html.h
+++ b/src/yelp-html.h
@@ -81,5 +81,7 @@ gboolean yelp_html_find (YelpHtml *html,
void yelp_html_jump_to_anchor (YelpHtml *html,
gchar *anchor);
+void yelp_html_copy_selection (YelpHtml *html);
+
#endif /* __YELP_HTML_H__ */
diff --git a/src/yelp-window.c b/src/yelp-window.c
index 48e1667a..112f9f3b 100644
--- a/src/yelp-window.c
+++ b/src/yelp-window.c
@@ -1620,6 +1620,9 @@ window_close_window_cb (GtkAction *action, YelpWindow *window)
static void
window_copy_cb (GtkAction *action, YelpWindow *window)
{
+ g_return_if_fail (YELP_IS_WINDOW (window));
+
+ yelp_html_copy_selection (window->priv->html_view);
}
static void