From 6f6478b0ad8b65a1f2b0c280a8cdf60c68919e1a Mon Sep 17 00:00:00 2001 From: Moritz Lipp Date: Thu, 3 Jun 2010 18:12:45 +0200 Subject: [PATCH] Added reload shortcut --- config.def.h | 1 + zathura.c | 55 +++++++++++++++++++++++++++++++--------------------- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/config.def.h b/config.def.h index 551910f..4370a95 100644 --- a/config.def.h +++ b/config.def.h @@ -89,6 +89,7 @@ Shortcut shortcuts[] = { {0, GDK_o, sc_focus_inputbar, NORMAL, { .data = ":open " } }, {0, GDK_f, sc_follow, NORMAL, {0} }, {0, GDK_r, sc_rotate, NORMAL, {0} }, + {0, GDK_R, sc_reload, NORMAL, {0} }, {0, GDK_h, sc_scroll, NORMAL, { LEFT } }, {0, GDK_j, sc_scroll, NORMAL, { DOWN } }, {0, GDK_k, sc_scroll, NORMAL, { UP } }, diff --git a/zathura.c b/zathura.c index 9ad9e3a..57b4eaf 100644 --- a/zathura.c +++ b/zathura.c @@ -315,6 +315,7 @@ void sc_focus_inputbar(Argument*); void sc_follow(Argument*); void sc_navigate(Argument*); void sc_recolor(Argument*); +void sc_reload(Argument*); void sc_rotate(Argument*); void sc_scroll(Argument*); void sc_search(Argument*); @@ -1527,6 +1528,37 @@ sc_recolor(Argument* argument) draw(Zathura.PDF.page_number); } +void +sc_reload(Argument* argument) +{ + if(!Zathura.PDF.document) + return; + + /* save old information */ + g_static_mutex_lock(&(Zathura.Lock.pdf_obj_lock)); + char* path = Zathura.PDF.file ? strdup(Zathura.PDF.file) : NULL; + char* password = Zathura.PDF.password ? strdup(Zathura.PDF.password) : NULL; + int scale = Zathura.PDF.scale; + int page = Zathura.PDF.page_number; + int rotate = Zathura.PDF.rotate; + g_static_mutex_unlock(&(Zathura.Lock.pdf_obj_lock)); + + /* reopen and restore settings */ + cmd_close(0, NULL); + open_file(path, password); + + Zathura.PDF.scale = scale; + Zathura.PDF.rotate = rotate; + + draw(page); + + if(path) + free(path); + if(password) + free(password); +} + + void sc_rotate(Argument* argument) { @@ -3586,28 +3618,7 @@ cb_watch_file(GFileMonitor* monitor, GFile* file, GFile* other_file, GFileMonito if(event != G_FILE_MONITOR_EVENT_CHANGES_DONE_HINT) return FALSE; - /* save old information */ - g_static_mutex_lock(&(Zathura.Lock.pdf_obj_lock)); - char* path = Zathura.PDF.file ? strdup(Zathura.PDF.file) : NULL; - char* password = Zathura.PDF.password ? strdup(Zathura.PDF.password) : NULL; - int scale = Zathura.PDF.scale; - int page = Zathura.PDF.page_number; - g_static_mutex_unlock(&(Zathura.Lock.pdf_obj_lock)); - - /* reopen and restore settings */ - gdk_threads_enter(); - cmd_close(0, NULL); - open_file(path, password); - - Zathura.PDF.scale = scale; - - draw(page); - gdk_threads_leave(); - - if(path) - free(path); - if(password) - free(password); + sc_reload(NULL); return TRUE; }