SF.net SVN: geany-plugins:[1842] trunk/geany-plugins/webhelper/src
colombanw at users.sourceforge.net
colombanw at xxxxx
Thu Jan 13 21:55:04 UTC 2011
Revision: 1842
http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=1842&view=rev
Author: colombanw
Date: 2011-01-13 21:55:04 +0000 (Thu, 13 Jan 2011)
Log Message:
-----------
WebHelper: Add a keybinding to show/hide web view's window (bug #3156262)
This keybinding currently does nothing it the web view is not in a
separate window. Maybe it should do something similar when docked,
not sure yet.
Modified Paths:
--------------
trunk/geany-plugins/webhelper/src/gwh-keybindings.h
trunk/geany-plugins/webhelper/src/gwh-plugin.c
Modified: trunk/geany-plugins/webhelper/src/gwh-keybindings.h
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-keybindings.h 2011-01-13 21:54:37 UTC (rev 1841)
+++ trunk/geany-plugins/webhelper/src/gwh-keybindings.h 2011-01-13 21:55:04 UTC (rev 1842)
@@ -31,6 +31,7 @@
enum {
GWH_KB_TOGGLE_INSPECTOR,
+ GWH_KB_SHOW_HIDE_SEPARATE_WINDOW,
GWH_KB_COUNT
};
Modified: trunk/geany-plugins/webhelper/src/gwh-plugin.c
===================================================================
--- trunk/geany-plugins/webhelper/src/gwh-plugin.c 2011-01-13 21:54:37 UTC (rev 1841)
+++ trunk/geany-plugins/webhelper/src/gwh-plugin.c 2011-01-13 21:55:04 UTC (rev 1842)
@@ -67,10 +67,33 @@
/* only valid if type == CONTAINER_NOTEBOOK */
gint page_num;
+ /* only valid if type == CONTAINER_WINDOW */
+ gboolean visible;
} G_container;
static GwhSettings *G_settings = NULL;
+static void
+separate_window_set_visible (gboolean visible)
+{
+ if (visible != G_container.visible) {
+ gchar *geometry;
+
+ G_container.visible = visible;
+ if (visible) {
+ gtk_widget_show (G_container.widget);
+ g_object_get (G_settings, "browser-separate-window-geometry", &geometry, NULL);
+ gwh_set_window_geometry (GTK_WINDOW (G_container.widget), geometry, NULL, NULL);
+ g_free (geometry);
+ } else {
+ geometry = gwh_get_window_geometry (GTK_WINDOW (G_container.widget), 0, 0);
+ g_object_set (G_settings, "browser-separate-window-geometry", geometry, NULL);
+ g_free (geometry);
+ gtk_widget_hide (G_container.widget);
+ }
+ }
+}
+
static gboolean
on_separate_window_delete_event (GtkWidget *widget,
GdkEvent *event,
@@ -91,12 +114,7 @@
static gboolean
on_idle_widget_show (gpointer data)
{
- gchar *geometry;
-
- gtk_widget_show (data);
- g_object_get (G_settings, "browser-separate-window-geometry", &geometry, NULL);
- gwh_set_window_geometry (GTK_WINDOW (data), geometry, NULL, NULL);
- g_free (geometry);
+ separate_window_set_visible (TRUE);
/* present back the Geany's window because it is very unlikely the user
* expects the focus on our newly created window at this point, since we
* either just loaded the plugin or activated a element from Geany's UI */
@@ -160,11 +178,7 @@
detach_browser (void)
{
if (G_container.type == CONTAINER_WINDOW) {
- gchar *geometry;
-
- geometry = gwh_get_window_geometry (GTK_WINDOW (G_container.widget), 0, 0);
- g_object_set (G_settings, "browser-separate-window-geometry", geometry, NULL);
- g_free (geometry);
+ separate_window_set_visible (FALSE); /* saves the geometry */
gtk_widget_destroy (G_container.widget);
} else {
GtkNotebook *notebook = GTK_NOTEBOOK (G_container.widget);
@@ -252,7 +266,15 @@
gwh_browser_toggle_inspector (GWH_BROWSER (G_browser));
}
+static void
+on_kb_show_hide_separate_window (guint key_id)
+{
+ if (G_container.type == CONTAINER_WINDOW) {
+ separate_window_set_visible (! G_container.visible);
+ }
+}
+
static gchar *
get_config_filename (void)
{
@@ -324,6 +346,11 @@
keybindings_set_item (gwh_keybindings_get_group (), GWH_KB_TOGGLE_INSPECTOR,
on_kb_toggle_inspector, GDK_F12, 0, "toggle_inspector",
_("Toggle Web Inspector"), NULL);
+ keybindings_set_item (gwh_keybindings_get_group (),
+ GWH_KB_SHOW_HIDE_SEPARATE_WINDOW,
+ on_kb_show_hide_separate_window, 0, 0,
+ "show_hide_separate_window",
+ _("Show/Hide Web View's Window"), NULL);
}
void
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Plugins-Commits
mailing list