mirror of
https://github.com/gnosygnu/xowa.git
synced 2026-03-02 03:49:30 +00:00
Gui: Fix Read / Edit / HTML not working by keyboard shortcuts / in personal wikis [#392]
This commit is contained in:
@@ -66,9 +66,10 @@ public class Xog_html_itm implements Xog_js_wkr, Gfo_invk, Gfo_evt_itm, Xoh_page
|
||||
byte view_mode = owner_tab.View_mode();
|
||||
byte[] html_src = page.Wikie().Html_mgr().Page_wtr_mgr().Gen(page, this, view_mode); // NOTE: must use wiki of page, not of owner tab; DATE:2015-03-05
|
||||
Html_src_(page, html_src);
|
||||
if (view_mode == Xopg_page_.Tid_read){ // used only for Xosrh test; DATE:2014-01-29
|
||||
if (view_mode == Xopg_view_mode_.Tid__read){ // used only for Xosrh test; DATE:2014-01-29
|
||||
html_box.Html_js_eval_proc_as_str(Xog_js_procs.Win__focus_body); // NOTE: only focus if read so up / down will scroll box; edit / html should focus edit-box; DATE:2014-06-05
|
||||
page.Root().Data_htm_(html_src);
|
||||
if (page.Root() != null) // NOTE:null when navigating to a new page in personal wikis; DATE:2019-03-20
|
||||
page.Root().Data_htm_(html_src);
|
||||
}
|
||||
}
|
||||
private void Html_src_(Xoae_page page, byte[] html_bry) {
|
||||
|
||||
@@ -109,7 +109,12 @@ public class Xog_tab_itm implements Gfo_invk {
|
||||
tab_box.Tab_name_(tab_name);
|
||||
}
|
||||
public Xog_history_mgr History_mgr() {return history_mgr;} private Xog_history_mgr history_mgr = new Xog_history_mgr();
|
||||
public byte View_mode() {return view_mode;} public Xog_tab_itm View_mode_(byte v) {view_mode = v; return this;} private byte view_mode = Xopg_page_.Tid_read;
|
||||
public byte View_mode() {return view_mode;} private byte view_mode = Xopg_view_mode_.Tid__read;
|
||||
public void View_mode_(byte v) {
|
||||
view_mode = v;
|
||||
if (view_mode != Xopg_view_mode_.Tid__read) // if read, don't bother adding "action=read"
|
||||
page.Url().Qargs_mgr().Set_val_by_bry(Xoa_url_.Qarg__action, Xopg_view_mode_.To_bry(v));
|
||||
}
|
||||
public void Pin_toggle() {}
|
||||
public void Show_url_bgn(Xoa_url url) {
|
||||
this.tab_is_loading = true;
|
||||
@@ -161,7 +166,8 @@ public class Xog_tab_itm implements Gfo_invk {
|
||||
if (wiki.Db_mgr().Save_mgr().Create_enabled()
|
||||
|| wiki.Page_mgr().Sync_mgr().Auto_enabled()) {
|
||||
page = Xoae_page.New_edit(wiki, ttl);
|
||||
view_mode = Xopg_page_.Tid_edit;
|
||||
page.Url_(url); // NOTE: need to set url else query args like action=edit will be lost; DATE:2019-03-20
|
||||
view_mode = Xopg_view_mode_.Tid__edit;
|
||||
history_mgr.Add(page); // NOTE: must put new_page on stack so that pressing back will pop new_page, not previous page
|
||||
Xog_tab_itm_read_mgr.Show_page(this, page, false);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ import gplx.xowa.wikis.nss.*;
|
||||
import gplx.xowa.parsers.*; import gplx.xowa.parsers.tmpls.*;
|
||||
public class Xog_tab_itm_edit_mgr {
|
||||
public static void Save(Xog_tab_itm tab, boolean quick_save) {
|
||||
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles ctrl+s being pressed in read/html modes
|
||||
if (tab.View_mode() != Xopg_view_mode_.Tid__edit) return; // exit if not edit; handles ctrl+s being pressed in read/html modes
|
||||
|
||||
// get text and save directly to text_db
|
||||
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
|
||||
@@ -52,7 +52,7 @@ public class Xog_tab_itm_edit_mgr {
|
||||
|
||||
// update categories
|
||||
try {
|
||||
wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_page_.Tid_read); // NOTE: need to write html to fill Wtxt().Ctgs
|
||||
wiki.Html_mgr().Page_wtr_mgr().Gen(page, Xopg_view_mode_.Tid__read); // NOTE: need to write html to fill Wtxt().Ctgs
|
||||
gplx.xowa.addons.wikis.ctgs.edits.Xoctg_edit_mgr.Update(wiki, page.Ttl().Page_db(), page_id, page.Wtxt().Ctgs__to_ary());
|
||||
} catch (Exception e) {
|
||||
Gfo_usr_dlg_.Instance.Warn_many("", "", "failed to update categories; err=~{0}", Err_.Message_gplx_log(e));
|
||||
@@ -70,12 +70,12 @@ public class Xog_tab_itm_edit_mgr {
|
||||
|
||||
// force full reload of page; needed to refresh page_modified; DATE:2017-03-06
|
||||
tab.Show_url_bgn(page.Url());
|
||||
// win_itm.Page__mode_(Xopg_page_.Tid_read);
|
||||
// win_itm.Page__mode_(Xopg_view_mode_.Tid__read);
|
||||
// win_itm.Page__async__bgn(tab);
|
||||
}
|
||||
}
|
||||
public static void Preview(Xog_tab_itm tab) {
|
||||
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles preview somehow being called?
|
||||
if (tab.View_mode() != Xopg_view_mode_.Tid__edit) return; // exit if not edit; handles preview somehow being called?
|
||||
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
|
||||
Xog_html_itm html_itm = tab.Html_itm();
|
||||
|
||||
@@ -88,18 +88,18 @@ public class Xog_tab_itm_edit_mgr {
|
||||
tab.Page_(new_page); new_page.Tab_data().Tab_(tab); // replace old page with new_page; DATE:2014-10-09
|
||||
|
||||
Bry_bfr tmp_bfr = wiki.Utl__bfr_mkr().Get_m001();
|
||||
Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_page_.Tid_read);
|
||||
Xoh_page_wtr_wkr wkr = wiki.Html_mgr().Page_wtr_mgr().Wkr(Xopg_view_mode_.Tid__read);
|
||||
wkr.Write_body(tmp_bfr, wiki.Parser_mgr().Ctx(), Xoh_wtr_ctx.Basic, new_page);
|
||||
byte[] new_html = tmp_bfr.To_bry_and_rls();
|
||||
new_page.Html_data().Edit_preview_(new_html);
|
||||
|
||||
Invalidate(wiki);
|
||||
win_itm.Page__mode_(Xopg_page_.Tid_edit);
|
||||
win_itm.Page__mode_(Xopg_view_mode_.Tid__edit);
|
||||
html_itm.Scroll_page_by_id_gui(Xog_html_itm.Elem_id__first_heading);// NOTE: was originally directly; changed to call on thread; DATE:2014-05-03
|
||||
win_itm.Page__async__bgn(tab); // NOTE: needed to show images during preview; DATE:2014-06-21
|
||||
}
|
||||
public static void Rename(Xog_tab_itm tab) {
|
||||
if (tab.View_mode() != Xopg_page_.Tid_edit) return; // exit if not edit; handles ctrl+r being pressed
|
||||
if (tab.View_mode() != Xopg_view_mode_.Tid__edit) return; // exit if not edit; handles ctrl+r being pressed
|
||||
Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki(); Xog_win_itm win_itm = tab.Tab_mgr().Win();
|
||||
if (Bry_.Eq(page.Ttl().Page_db(), wiki.Props().Main_page())) {
|
||||
win_itm.Usr_dlg().Warn_many("", "", "The Main Page cannot be renamed");
|
||||
@@ -117,7 +117,7 @@ public class Xog_tab_itm_edit_mgr {
|
||||
}
|
||||
wiki.Db_mgr().Save_mgr().Data_rename(page, new_ns_id, new_text);
|
||||
page.Ttl_(Xoa_ttl.Parse(wiki, Bry_.Add(page.Ttl().Ns().Name_db_w_colon(), new_text)));
|
||||
win_itm.Page__mode_(Xopg_page_.Tid_read);
|
||||
win_itm.Page__mode_(Xopg_view_mode_.Tid__read);
|
||||
win_itm.Usr_dlg().Prog_one("", "", "renamed page to {0}", String_.new_u8(page.Ttl().Full_txt_raw()));
|
||||
}
|
||||
public static void Focus(Xog_win_itm win, String elem_focus_id) {
|
||||
|
||||
@@ -22,17 +22,17 @@ public class Xog_tab_itm_read_mgr {
|
||||
public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read) {Show_page(tab, new_page, reset_to_read, false, false, Xog_history_stack.Nav_fwd);}
|
||||
public static void Show_page(Xog_tab_itm tab, Xoae_page new_page, boolean reset_to_read, boolean new_page_is_same, boolean show_is_err, byte history_nav_type) {
|
||||
if (reset_to_read)
|
||||
tab.View_mode_(Xopg_page_.Tid_read);
|
||||
tab.View_mode_(Xopg_view_mode_.Tid__read);
|
||||
|
||||
// set View_mode based on "action="; DATE:2018-11-03
|
||||
byte[] action_val = new_page.Url().Qargs_mgr().Get_val_bry_or(Xoa_url_.Qarg__action, Xoa_url_.Qarg__action__read);
|
||||
byte view_mode = Xopg_page_.Tid_read;
|
||||
byte view_mode = Xopg_view_mode_.Tid__read;
|
||||
if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__read))
|
||||
view_mode = Xopg_page_.Tid_read;
|
||||
view_mode = Xopg_view_mode_.Tid__read;
|
||||
else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__edit))
|
||||
view_mode = Xopg_page_.Tid_edit;
|
||||
view_mode = Xopg_view_mode_.Tid__edit;
|
||||
else if (Bry_.Eq(action_val, Xoa_url_.Qarg__action__html))
|
||||
view_mode = Xopg_page_.Tid_html;
|
||||
view_mode = Xopg_view_mode_.Tid__html;
|
||||
tab.View_mode_(view_mode);
|
||||
|
||||
Xoae_page cur_page = tab.Page(); Xog_html_itm html_itm = tab.Html_itm(); Gfui_html html_box = html_itm.Html_box();
|
||||
@@ -63,7 +63,7 @@ public class Xog_tab_itm_read_mgr {
|
||||
tab.Tab_mgr().Tab_mgr().Focus();
|
||||
html_box.Focus();
|
||||
win.Usr_dlg().Prog_none("", "", ""); // blank out status bar
|
||||
if (tab.View_mode() == Xopg_page_.Tid_read)
|
||||
if (tab.View_mode() == Xopg_view_mode_.Tid__read)
|
||||
html_itm.Scroll_page_by_bmk_gui();
|
||||
else
|
||||
Gfo_invk_.Invk_by_val(tab.Html_itm().Cmd_async(), Xog_html_itm.Invk_html_elem_focus, Xog_html_itm.Elem_id__xowa_edit_data_box); // NOTE: must be async, else won't work; DATE:2014-06-05
|
||||
@@ -90,7 +90,7 @@ public class Xog_tab_itm_read_mgr {
|
||||
win.Usr_dlg().Warn_many("", "", err_msg);
|
||||
win.App().Log_wtr().Queue_enabled_(false);
|
||||
Xoae_page fail_page = wiki.Data_mgr().Load_page_by_ttl(ttl);
|
||||
tab.View_mode_(Xopg_page_.Tid_edit);
|
||||
tab.View_mode_(Xopg_view_mode_.Tid__edit);
|
||||
Update_selected_tab(win, url, ttl);
|
||||
Show_page(tab, fail_page, false, false, true, Xog_history_stack.Nav_fwd);
|
||||
win.Win_box().Text_(err_msg);
|
||||
|
||||
@@ -69,17 +69,17 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
|
||||
else if (ctx.Match(k, Gfui_html.Evt_location_changing)) Page__navigate_by_href(tab_mgr.Active_tab(), Xoh_href_gui_utl.Standardize_xowa_link(m.ReadStr("v")));
|
||||
else if (ctx.Match(k, Invk_page_refresh)) Page__refresh();
|
||||
else if (ctx.Match(k, Invk_page_async_exec)) Xog_async_wkr.Async(((Xog_tab_itm)m.ReadObj("v")));
|
||||
else if (ctx.Match(k, Invk_page_view_read)) Page__mode_(Xopg_page_.Tid_read);
|
||||
else if (ctx.Match(k, Invk_page_view_read)) Page__mode_(Xopg_view_mode_.Tid__read);
|
||||
else if (ctx.Match(k, Invk_page_view_edit)) Page__mode_edit_();
|
||||
else if (ctx.Match(k, Invk_page_view_html)) Page__mode_(Xopg_page_.Tid_html);
|
||||
else if (ctx.Match(k, Invk_page_view_html)) Page__mode_(Xopg_view_mode_.Tid__html);
|
||||
else if (ctx.Match(k, Invk_page_edit_save)) Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.N);
|
||||
else if (ctx.Match(k, Invk_page_edit_save_draft)) Xog_tab_itm_edit_mgr.Save(tab_mgr.Active_tab(), Bool_.Y);
|
||||
else if (ctx.Match(k, Invk_page_edit_preview)) Xog_tab_itm_edit_mgr.Preview(tab_mgr.Active_tab());
|
||||
else if (ctx.Match(k, Invk_page_edit_rename)) Xog_tab_itm_edit_mgr.Rename(tab_mgr.Active_tab());
|
||||
else if (ctx.Match(k, Invk_page_edit_focus_box)) Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__xowa_edit_data_box);
|
||||
else if (ctx.Match(k, Invk_page_edit_focus_first)) Xog_tab_itm_edit_mgr.Focus(this, Xog_html_itm.Elem_id__first_heading);
|
||||
else if (ctx.Match(k, Invk_page_dbg_html)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_page_.Tid_html);
|
||||
else if (ctx.Match(k, Invk_page_dbg_wiki)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_page_.Tid_edit);
|
||||
else if (ctx.Match(k, Invk_page_dbg_html)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_view_mode_.Tid__html);
|
||||
else if (ctx.Match(k, Invk_page_dbg_wiki)) Xog_tab_itm_edit_mgr.Debug(this, Xopg_view_mode_.Tid__edit);
|
||||
else if (ctx.Match(k, Invk_page_goto)) Page__navigate_by_url_bar(m.ReadStr("v"));
|
||||
else if (ctx.Match(k, Invk_page_goto_recent)) Page__navigate_by_url_bar(app.Usere().History_mgr().Get_at_last());
|
||||
else if (ctx.Match(k, Invk_history_bwd)) {Page__navigate_by_history(Bool_.N);}
|
||||
@@ -162,11 +162,11 @@ public class Xog_win_itm implements Gfo_invk, Gfo_evt_itm {
|
||||
// HACK: when "edit" is clicked, always reload page from database; handles rarely-reproducible issue of "edit-after-rename" causing older versions to show up
|
||||
Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki();
|
||||
page = wiki.Page_mgr().Load_page(page.Url(), page.Ttl(), tab);
|
||||
Page__mode_(Xopg_page_.Tid_edit);
|
||||
Page__mode_(Xopg_view_mode_.Tid__edit);
|
||||
}
|
||||
public void Page__mode_(byte new_mode_tid) {
|
||||
Xog_tab_itm tab = tab_mgr.Active_tab(); Xoae_page page = tab.Page(); Xowe_wiki wiki = tab.Wiki();
|
||||
if ( new_mode_tid == Xopg_page_.Tid_read // used to be && cur_view_tid == Edit; removed clause else redlinks wouldn't show when going form html to read (or clicking read multiple times) DATE: 2013-11-26;
|
||||
if ( new_mode_tid == Xopg_view_mode_.Tid__read // used to be && cur_view_tid == Edit; removed clause else redlinks wouldn't show when going form html to read (or clicking read multiple times) DATE: 2013-11-26;
|
||||
&& page.Db().Page().Exists() // if new page, don't try to reload
|
||||
) {
|
||||
// NOTE: if moving from "Edit" to "Read", reload page (else Preview changes will still show); NOTE: do not call Exec_page_reload / Exec_page_refresh, which will fire redlinks code
|
||||
|
||||
Reference in New Issue
Block a user