504 |
return FALSE; |
return FALSE; |
505 |
} |
} |
506 |
|
|
507 |
|
gboolean on_main_focus_change(GtkWidget *widget, GdkEventFocus *event, |
508 |
|
gpointer user_data) { |
509 |
|
appdata_t *appdata = (appdata_t*)user_data; |
510 |
|
g_assert(appdata->gps_state); |
511 |
|
|
512 |
|
printf("main/cachelist focus-%s event\n", event->in?"in":"out"); |
513 |
|
|
514 |
|
/* disconnect from gps if map looses focus */ |
515 |
|
/* this is to save energy if maep runs in background */ |
516 |
|
|
517 |
|
if(event->in) { |
518 |
|
/* request all GPS information required for map display */ |
519 |
|
gps_register_callback(appdata->gps_state, |
520 |
|
LATLON_CHANGED | TRACK_CHANGED | HERR_CHANGED | SATELLITE_CHANGED, |
521 |
|
main_gps_cb, appdata); |
522 |
|
} else |
523 |
|
gps_unregister_callback(appdata->gps_state, main_gps_cb); |
524 |
|
|
525 |
|
return FALSE; |
526 |
|
} |
527 |
|
|
528 |
static GtkWidget *cachelist_create(appdata_t *appdata, gpx_t *gpx, |
static GtkWidget *cachelist_create(appdata_t *appdata, gpx_t *gpx, |
529 |
cache_t *sel_cache) { |
cache_t *sel_cache) { |
530 |
GtkCellRenderer *renderer; |
GtkCellRenderer *renderer; |
716 |
g_signal_connect(G_OBJECT(view), "focus-out-event", |
g_signal_connect(G_OBJECT(view), "focus-out-event", |
717 |
G_CALLBACK(on_cachelist_focus_out), container); |
G_CALLBACK(on_cachelist_focus_out), container); |
718 |
|
|
719 |
|
/* make sure window can control gps */ |
720 |
|
g_signal_connect(G_OBJECT(appdata->window), "focus-in-event", |
721 |
|
G_CALLBACK(on_main_focus_change), appdata); |
722 |
|
|
723 |
|
g_signal_connect(G_OBJECT(appdata->window), "focus-out-event", |
724 |
|
G_CALLBACK(on_main_focus_change), appdata); |
725 |
|
|
726 |
#ifndef USE_PANNABLE_AREA |
#ifndef USE_PANNABLE_AREA |
727 |
g_signal_connect(gtk_scrolled_window_get_vadjustment( |
g_signal_connect(gtk_scrolled_window_get_vadjustment( |
728 |
GTK_SCROLLED_WINDOW(container)), |
GTK_SCROLLED_WINDOW(container)), |
2142 |
/********************* end of menu **********************/ |
/********************* end of menu **********************/ |
2143 |
|
|
2144 |
void cleanup(appdata_t *appdata) { |
void cleanup(appdata_t *appdata) { |
|
gps_unregister_callback(appdata->gps_state, main_gps_cb); |
|
|
|
|
2145 |
gconf_save_state(appdata); |
gconf_save_state(appdata); |
2146 |
|
|
2147 |
gpx_free_all(appdata->gpx); |
gpx_free_all(appdata->gpx); |
2599 |
appdata.gps_state = gps_init(); |
appdata.gps_state = gps_init(); |
2600 |
gps_change_state(&appdata); |
gps_change_state(&appdata); |
2601 |
|
|
2602 |
/* register the gps callback for the main screen (map has its own) */ |
/* make sure window can control gps */ |
2603 |
gps_register_callback(appdata.gps_state, |
g_signal_connect(G_OBJECT(appdata.window), "focus-in-event", |
2604 |
LATLON_CHANGED | TRACK_CHANGED | HERR_CHANGED | SATELLITE_CHANGED, |
G_CALLBACK(on_main_focus_change), &appdata); |
2605 |
main_gps_cb, &appdata); |
|
2606 |
|
g_signal_connect(G_OBJECT(appdata.window), "focus-out-event", |
2607 |
|
G_CALLBACK(on_main_focus_change), &appdata); |
2608 |
|
|
2609 |
|
|
2610 |
appdata.cur_view = gpxlist_create_view_and_model(&appdata, NULL); |
appdata.cur_view = gpxlist_create_view_and_model(&appdata, NULL); |
2611 |
#ifndef USE_STACKABLE_WINDOW |
#ifndef USE_STACKABLE_WINDOW |