X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-application.c;h=497ce21b6258a711ffe3187b8ba96450b18fd686;hb=d578d4048cd4cb85bcb3f84a30e552ddd1709bd3;hp=5a870148fd3c4352fc9e984cc8c5081598987433;hpb=e4687a2fc8498ed87b1c2b8f55cb91dfe7c3ff42;p=evince.git diff --git a/shell/ev-application.c b/shell/ev-application.c index 5a870148..497ce21b 100644 --- a/shell/ev-application.c +++ b/shell/ev-application.c @@ -17,7 +17,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ @@ -94,6 +94,8 @@ G_DEFINE_TYPE (EvApplication, ev_application, G_TYPE_OBJECT); #define APPLICATION_DBUS_INTERFACE "org.gnome.evince.Application" #endif +static const gchar *userdir = NULL; + /** * ev_application_get_instance: * @@ -610,6 +612,10 @@ ev_application_open_uri_in_window (EvApplication *application, const gchar *search_string, guint timestamp) { +#ifdef GDK_WINDOWING_X11 + GdkWindow *gdk_window; +#endif + if (screen) { ev_stock_icons_set_screen (screen); gtk_window_set_screen (GTK_WINDOW (ev_window), screen); @@ -619,13 +625,15 @@ ev_application_open_uri_in_window (EvApplication *application, we can restore window size without flickering */ ev_window_open_uri (ev_window, uri, dest, mode, search_string); - if (!GTK_WIDGET_REALIZED (GTK_WIDGET (ev_window))) + if (!gtk_widget_get_realized (GTK_WIDGET (ev_window))) gtk_widget_realize (GTK_WIDGET (ev_window)); #ifdef GDK_WINDOWING_X11 + gdk_window = gtk_widget_get_window (GTK_WIDGET (ev_window)); + if (timestamp <= 0) - timestamp = gdk_x11_get_server_time (GTK_WIDGET (ev_window)->window); - gdk_x11_window_set_user_time (GTK_WIDGET (ev_window)->window, timestamp); + timestamp = gdk_x11_get_server_time (gdk_window); + gdk_x11_window_set_user_time (gdk_window, timestamp); ev_document_fc_mutex_lock (); gtk_window_present (GTK_WINDOW (ev_window)); @@ -703,19 +711,24 @@ ev_application_open_window (EvApplication *application, guint32 timestamp) { GtkWidget *new_window = ev_window_new (); +#ifdef GDK_WINDOWING_X11 + GdkWindow *gdk_window; +#endif if (screen) { ev_stock_icons_set_screen (screen); gtk_window_set_screen (GTK_WINDOW (new_window), screen); } - if (!GTK_WIDGET_REALIZED (new_window)) + if (!gtk_widget_get_realized (new_window)) gtk_widget_realize (new_window); #ifdef GDK_WINDOWING_X11 + gdk_window = gtk_widget_get_window (GTK_WIDGET (new_window)); + if (timestamp <= 0) - timestamp = gdk_x11_get_server_time (new_window->window); - gdk_x11_window_set_user_time (new_window->window, timestamp); + timestamp = gdk_x11_get_server_time (gdk_window); + gdk_x11_window_set_user_time (gdk_window, timestamp); gtk_window_present (GTK_WINDOW (new_window)); #else @@ -802,9 +815,14 @@ ev_application_accel_map_save (EvApplication *application) gchar *tmp_filename; gint fd; - accel_map_file = g_build_filename (g_get_home_dir (), - ".gnome2", "accels", - "evince", NULL); + if (userdir) { + accel_map_file = g_build_filename (userdir, "accels", + "evince", NULL); + } else { + accel_map_file = g_build_filename (g_get_home_dir (), + ".gnome2", "accels", + "evince", NULL); + } tmp_filename = g_strdup_printf ("%s.XXXXXX", accel_map_file); @@ -832,9 +850,15 @@ ev_application_accel_map_load (EvApplication *application) { gchar *accel_map_file; - accel_map_file = g_build_filename (g_get_home_dir (), - ".gnome2", "accels", - "evince", NULL); + if (userdir) { + accel_map_file = g_build_filename (userdir, "accels", + "evince", NULL); + } else { + accel_map_file = g_build_filename (g_get_home_dir (), + ".gnome2", "accels", + "evince", NULL); + } + gtk_accel_map_load (accel_map_file); g_free (accel_map_file); } @@ -892,10 +916,14 @@ ev_application_init (EvApplication *ev_application) { GError *error = NULL; - ev_application->dot_dir = g_build_filename (g_get_home_dir (), - ".gnome2", - "evince", - NULL); + userdir = g_getenv ("GNOME22_USER_DIR"); + if (userdir) + ev_application->dot_dir = g_build_filename (userdir, "evince", NULL); + else + ev_application->dot_dir = g_build_filename (g_get_home_dir (), + ".gnome2", + "evince", + NULL); #ifdef G_OS_WIN32 {