New function to let the outside world decide which child to focus.

1998-04-13  Federico Mena Quintero  <federico@nuclecu.unam.mx>

	* gncal-full-day.h:
	* gncal-full-day.c (gncal_full_day_focus_child): New function to
	let the outside world decide which child to focus.
	(gncal_full_day_focus_child): Bleah.  We have to synthesize a
	click because GtkText will not set the cursor when you focus it.

	* gnome-cal.c (day_view_range_activated): Focus the new child in
	the full day widget.

svn path=/trunk/; revision=131
This commit is contained in:
Federico Mena Quintero
1998-04-14 00:59:30 +00:00
committed by Arturo Espinosa
parent c9311c844f
commit 23ef00df35
10 changed files with 89 additions and 5 deletions

View File

@ -1,5 +1,14 @@
1998-04-13 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gncal-full-day.h:
* gncal-full-day.c (gncal_full_day_focus_child): New function to
let the outside world decide which child to focus.
(gncal_full_day_focus_child): Bleah. We have to synthesize a
click because GtkText will not set the cursor when you focus it.
* gnome-cal.c (day_view_range_activated): Focus the new child in
the full day widget.
* eventedit.c (event_editor_setup_time_frame): Re-aligned some
widgets to make it look prettier.
(ee_alarm_widgets): Likewise.

View File

@ -15,9 +15,6 @@ Event editor dialog:
Full day view widget:
- Finish the code on gnome-cal.c to add an event when the
range_activated signal is caught.
- Check notification to calendar when an object changes. Maybe we
need some flags to tell gnome_calendar_object_changed() whether
summary/dates/etc. changed. Maybe not.

View File

@ -1662,6 +1662,42 @@ gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *up
return TRUE;
}
void
gncal_full_day_focus_child (GncalFullDay *fullday, iCalObject *object)
{
GList *children;
Child *child;
GdkEvent event;
g_return_if_fail (fullday != NULL);
g_return_if_fail (object != NULL);
for (children = fullday->children; children; children = children->next) {
child = children->data;
if (child->ico == object) {
gtk_widget_grab_focus (child->widget);
/* We synthesize a click because GtkText will not set the cursor and
* the user will not be able to type-- this has to be fixed in
* GtkText. */
memset (&event, 0, sizeof (event));
event.type = GDK_BUTTON_PRESS;
event.button.window = child->widget->window;
event.button.time = GDK_CURRENT_TIME;
event.button.x = 0;
event.button.y = 0;
event.button.button = 1;
gtk_widget_event (child->widget, &event);
break;
}
}
}
static void
range_activated (GncalFullDay *fullday)
{

View File

@ -60,6 +60,8 @@ void gncal_full_day_set_bounds (GncalFullDay *fullday, time_t lower,
*/
int gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *upper);
void gncal_full_day_focus_child (GncalFullDay *fullday, iCalObject *object);
END_GNOME_DECLS
#endif

View File

@ -49,6 +49,7 @@ day_view_range_activated (GncalFullDay *fullday, GnomeCalendar *gcal)
gncal_full_day_selection_range (fullday, &ical->dtstart, &ical->dtend);
gnome_calendar_add_object (gcal, ical);
gncal_full_day_focus_child (fullday, ical);
}
static void

View File

@ -36,7 +36,7 @@ typedef struct {
} GnomeCalendarClass;
guint gnome_calendar_get_type (void);
GtkWidget *gnome_calendar_new (char *title);
GtkWidget *gnome_calendar_new (char *title);
void gnome_calendar_load (GnomeCalendar *gcal, char *file);
void gnome_calendar_add_object (GnomeCalendar *gcal, iCalObject *obj);
void gnome_calendar_next (GnomeCalendar *gcal);

View File

@ -1662,6 +1662,42 @@ gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *up
return TRUE;
}
void
gncal_full_day_focus_child (GncalFullDay *fullday, iCalObject *object)
{
GList *children;
Child *child;
GdkEvent event;
g_return_if_fail (fullday != NULL);
g_return_if_fail (object != NULL);
for (children = fullday->children; children; children = children->next) {
child = children->data;
if (child->ico == object) {
gtk_widget_grab_focus (child->widget);
/* We synthesize a click because GtkText will not set the cursor and
* the user will not be able to type-- this has to be fixed in
* GtkText. */
memset (&event, 0, sizeof (event));
event.type = GDK_BUTTON_PRESS;
event.button.window = child->widget->window;
event.button.time = GDK_CURRENT_TIME;
event.button.x = 0;
event.button.y = 0;
event.button.button = 1;
gtk_widget_event (child->widget, &event);
break;
}
}
}
static void
range_activated (GncalFullDay *fullday)
{

View File

@ -60,6 +60,8 @@ void gncal_full_day_set_bounds (GncalFullDay *fullday, time_t lower,
*/
int gncal_full_day_selection_range (GncalFullDay *fullday, time_t *lower, time_t *upper);
void gncal_full_day_focus_child (GncalFullDay *fullday, iCalObject *object);
END_GNOME_DECLS
#endif

View File

@ -49,6 +49,7 @@ day_view_range_activated (GncalFullDay *fullday, GnomeCalendar *gcal)
gncal_full_day_selection_range (fullday, &ical->dtstart, &ical->dtend);
gnome_calendar_add_object (gcal, ical);
gncal_full_day_focus_child (fullday, ical);
}
static void

View File

@ -36,7 +36,7 @@ typedef struct {
} GnomeCalendarClass;
guint gnome_calendar_get_type (void);
GtkWidget *gnome_calendar_new (char *title);
GtkWidget *gnome_calendar_new (char *title);
void gnome_calendar_load (GnomeCalendar *gcal, char *file);
void gnome_calendar_add_object (GnomeCalendar *gcal, iCalObject *obj);
void gnome_calendar_next (GnomeCalendar *gcal);