[Calendar] Fix for Bug # 326434

Rajeev ramanathan <[email protected]>
Newsgroups gmane.comp.gnome.evolution.patches
Message-ID <[email protected]>
Hi
 Added code to
 *gui/e-calendar-view.c
 *gui/e-week-view.c
 *gui/e-day-view.c
  
 to display tooltip maximally visible wherever placed on screen.
 
 Rajeev
 

			
---------------------------------
 Yahoo! Autos. Looking for a sweet ride? Get pricing, reviews, & more on new and used cars.

_______________________________________________
Evolution-patches mailing list
[email protected]
http://mail.gnome.org/mailman/listinfo/evolution-patches
tooltip.diff (text/x-patch, 5.4 KB)
Index: gui/e-calendar-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-calendar-view.c,v
retrieving revision 1.114
diff -u -p -r1.114 e-calendar-view.c
--- gui/e-calendar-view.c	23 Jan 2006 06:45:03 -0000	1.114
+++ gui/e-calendar-view.c	2 Feb 2006 04:34:58 -0000
@@ -1995,6 +1995,7 @@ e_calendar_view_get_tooltips (ECalendarV
 	GtkWidget *widget = (GtkWidget *) g_object_get_data (data->cal_view, "tooltip-window");
 	ECalComponent *newcomp = e_cal_component_new ();
 	icaltimezone *zone;	
+	int screen_width, width;
 
 	/* Delete any stray tooltip if left */
 	if (widget)
@@ -2112,6 +2113,15 @@ e_calendar_view_get_tooltips (ECalendarV
 	gtk_container_add ((GtkContainer *)pevent->tooltip, frame);
 			
 	gtk_widget_show_all (pevent->tooltip);	
+
+	screen_width = gdk_screen_width();
+	width = ((GtkWidget *)pevent->tooltip)->allocation.width;
+	
+	if(pevent ->tooltip) {
+		if((width + pevent->x) >= screen_width)
+			gtk_window_move ((GtkWindow *)pevent->tooltip, screen_width-width, pevent->y+16);
+	}
+
 	gdk_keyboard_grab (pevent->tooltip->window, FALSE, GDK_CURRENT_TIME);
 	g_signal_connect (pevent->tooltip, "key-press-event", G_CALLBACK (tooltip_grab), data->cal_view);
 	pevent->timeout = -1;
Index: gui/e-day-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-day-view.c,v
retrieving revision 1.293
diff -u -p -r1.293 e-day-view.c
--- gui/e-day-view.c	16 Jan 2006 12:59:43 -0000	1.293
+++ gui/e-day-view.c	2 Feb 2006 04:35:13 -0000
@@ -5948,6 +5948,9 @@ e_day_view_on_text_item_event (GnomeCanv
 			EDayViewEvent *pevent;
 			int event_num = GPOINTER_TO_INT(g_object_get_data ((GObject *)item, "event-num"));
 			int day = GPOINTER_TO_INT(g_object_get_data ((GObject *)item, "event-day"));
+			int screen_width = gdk_screen_width();						
+			int width = 0;
+			GtkRequisition request;
 
 			pevent = tooltip_get_view_event (day_view, day, event_num);
 						
@@ -5956,7 +5959,14 @@ e_day_view_on_text_item_event (GnomeCanv
 			pevent->tooltip = (GtkWidget *)g_object_get_data (day_view, "tooltip-window");
 			
 			if (pevent->tooltip) {
-				gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)event)->x_root)+16, ((int)((GdkEventMotion *)event)->y_root) +16);
+				gtk_widget_size_request(pevent->tooltip, &request);
+				width = request.width;
+
+			if((width + pevent->x) <= screen_width)
+					gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)event)->x_root)+16, ((int)((GdkEventMotion *)event)->y_root) +16);
+				else
+					gtk_window_move ((GtkWindow *)pevent->tooltip, screen_width-width, ((int)
+((GdkEventMotion *)event)->y_root)+16);
 			}
 
 			return TRUE;
Index: gui/e-week-view.c
===================================================================
RCS file: /cvs/gnome/evolution/calendar/gui/e-week-view.c,v
retrieving revision 1.256
diff -u -p -r1.256 e-week-view.c
--- gui/e-week-view.c	30 Jan 2006 14:36:33 -0000	1.256
+++ gui/e-week-view.c	2 Feb 2006 04:35:23 -0000
@@ -2619,7 +2619,6 @@ tooltip_event_cb (GnomeCanvasItem *item,
 			pevent->x = ((GdkEventMotion *)event)->x_root;
 			pevent->y = ((GdkEventMotion *)event)->y_root;
 			pevent->tooltip = (GtkWidget *)g_object_get_data (view, "tooltip-window");
-			
 			if (pevent->tooltip) {
 				gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)event)->x_root)+16, ((int)((GdkEventMotion *)event)->y_root) +16);
 			}
@@ -3036,6 +3035,9 @@ e_week_view_on_text_item_event (GnomeCan
 	gint event_num, span_num;
 	int nevent = GPOINTER_TO_INT (g_object_get_data (item, "event-num"));
 	EWeekViewEvent *pevent;
+	int screen_width = gdk_screen_width();						
+	int width = 0;
+	GtkRequisition request;
 	
 	pevent = tooltip_get_view_event (week_view, -1, nevent);
 
@@ -3194,9 +3196,16 @@ e_week_view_on_text_item_event (GnomeCan
 		pevent->y = ((GdkEventMotion *)gdkevent)->y_root;
 		pevent->tooltip = (GtkWidget *)g_object_get_data (week_view, "tooltip-window");
 		
-		if (pevent->tooltip)
-			gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)gdkevent)->x_root)+16, ((int)((GdkEventMotion *)gdkevent)->y_root) +16);
-
+		if (pevent->tooltip) {
+			gtk_widget_size_request(pevent->tooltip, &request);
+			width = request.width;
+			
+			if((width + pevent->x) <= screen_width)
+				gtk_window_move ((GtkWindow *)pevent->tooltip, ((int)((GdkEventMotion *)gdkevent)->x_root)+16, ((int)((GdkEventMotion *)gdkevent)->y_root) +16);
+			else
+				gtk_window_move ((GtkWindow *)pevent->tooltip, screen_width-width, ((int)
+((GdkEventMotion *)gdkevent)->y_root)+16);
+		}
 		return TRUE;		
 	case GDK_FOCUS_CHANGE:
 		if (gdkevent->focus_change.in) {
Index: ChangeLog
===================================================================
RCS file: /cvs/gnome/evolution/calendar/ChangeLog,v
retrieving revision 1.2963
diff -u -p -r1.2963 ChangeLog
--- ChangeLog	27 Jan 2006 19:39:44 -0000	1.2963
+++ ChangeLog	2 Feb 2006 04:35:37 -0000
@@ -1,3 +1,12 @@
+2006-02-01  Rajeev ramanathan <[email protected]>
+
+	** Fixes Bug #326434
+
+	* gui/e-day-view.c : (e_day_view_on_text_item_event)
+	* gui/e-calendar-view.c : (e_calendar_view_get_tooltips)  Calculated 
+	Width of the tooltip widget and used it with X-position of mouse to 
+	display tooltip 	maximally visible whereever placed in the screen 
+	
 2006-01-28  Rajeev ramanathan <[email protected]>
 
 	** Fixes bug #328510, #328885
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.