gedit r6799 - in trunk: . gedit



Author: pborelli
Date: Fri Jan  2 21:40:37 2009
New Revision: 6799
URL: http://svn.gnome.org/viewvc/gedit?rev=6799&view=rev

Log:
2009-01-02  Paolo Borelli  <pborelli katamail com>

	* gedit/gedit-view.c: allow to toggle line numbers in the
	margin context menu.



Modified:
   trunk/ChangeLog
   trunk/gedit/gedit-view.c

Modified: trunk/gedit/gedit-view.c
==============================================================================
--- trunk/gedit/gedit-view.c	(original)
+++ trunk/gedit/gedit-view.c	Fri Jan  2 21:40:37 2009
@@ -43,6 +43,7 @@
 
 #include "gedit-view.h"
 #include "gedit-debug.h"
+#include "gedit-prefs-manager.h"
 #include "gedit-prefs-manager-app.h"
 #include "gedit-marshal.h"
 #include "gedit-utils.h"
@@ -123,6 +124,8 @@
 	      					 gint              x,
 	      					 gint              y,
 	      					 guint             time);
+static gboolean	gedit_view_button_press_event	(GtkWidget        *widget,
+						 GdkEventButton   *event);
 
 static gboolean start_interactive_search	(GeditView        *view);
 static gboolean start_interactive_goto_line	(GeditView        *view);
@@ -207,7 +210,7 @@
 	widget_class->drag_motion = gedit_view_drag_motion;
 	widget_class->drag_data_received = gedit_view_drag_data_received;
 	widget_class->drag_drop = gedit_view_drag_drop;
-
+	widget_class->button_press_event = gedit_view_button_press_event;
 	klass->start_interactive_search = start_interactive_search;
 	klass->start_interactive_goto_line = start_interactive_goto_line;
 	klass->reset_searched_text = reset_searched_text;	
@@ -1910,6 +1913,70 @@
 	return result;
 }
 
+static void
+show_line_numbers_toggled (GtkMenu   *menu,
+			   GeditView *view)
+{
+	gboolean show;
+
+	show = gtk_check_menu_item_get_active (GTK_CHECK_MENU_ITEM (menu));
+
+	gedit_prefs_manager_set_display_line_numbers (show);
+}
+
+static GtkWidget *
+create_line_numbers_menu (GtkWidget *view)
+{
+	GtkWidget *menu;
+	GtkWidget *item;
+
+	menu = gtk_menu_new ();
+
+	item = gtk_check_menu_item_new_with_mnemonic (_("_Display line numbers"));
+	gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (item),
+					gtk_source_view_get_show_line_numbers (GTK_SOURCE_VIEW (view)));
+	g_signal_connect (item, "toggled",
+			  G_CALLBACK (show_line_numbers_toggled), view);
+	gtk_menu_shell_append (GTK_MENU_SHELL (menu), item);
+	
+	gtk_widget_show_all (menu);
+	
+	return menu;
+}
+
+static void
+show_line_numbers_menu (GtkWidget      *view,
+			GdkEventButton *event)
+{
+	GtkWidget *menu;
+
+	menu = create_line_numbers_menu (view);
+
+	gtk_menu_popup (GTK_MENU (menu), 
+			NULL, 
+			NULL,
+			NULL, 
+			NULL,
+			event->button, 
+			event->time);
+}
+
+static gboolean
+gedit_view_button_press_event (GtkWidget *widget, GdkEventButton *event)
+{
+	if ((event->type == GDK_BUTTON_PRESS) && 
+	    (event->button == 3) &&
+	    (event->window == gtk_text_view_get_window (GTK_TEXT_VIEW (widget),
+						        GTK_TEXT_WINDOW_LEFT)))
+	{
+		show_line_numbers_menu (widget, event);
+
+		return TRUE;
+	}
+
+	return GTK_WIDGET_CLASS (gedit_view_parent_class)->button_press_event (widget, event);
+}
+
 static void 	
 search_highlight_updated_cb (GeditDocument *doc,
 			     GtkTextIter   *start,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]