X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ffiledlg.C;h=bbd63ba7ed6809cf7285ec94dc8b5752fe18c739;hb=a858be7332e331e0244e4dba7b0931b6072ffd3d;hp=2369672d98fd5777a0799e4ad3ca75eb07963344;hpb=35584afc1162dec2cf9fff79305e95cb3b75aefb;p=lyx.git diff --git a/src/filedlg.C b/src/filedlg.C index 2369672d98..bbd63ba7ed 100644 --- a/src/filedlg.C +++ b/src/filedlg.C @@ -75,6 +75,12 @@ static const long ONE_HOUR_SEC = 60L * 60L; // global instance (user cache root) UserCache lyxUserCache = UserCache(string(),0,0); +// some "C" wrappers around callbacks +extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *, long lArgument); +extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *, long); +extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *, void *); +extern "C" int C_LyXDirEntryC_ldeCompProc(const void* r1, + const void* r2); // Add: creates a new user entry UserCache * UserCache::Add(uid_t ID) @@ -196,6 +202,13 @@ int LyXDirEntry::ldeCompProc(const LyXDirEntry * r1, return r1->pszName.compare(r2->pszName); } +extern "C" int C_LyXDirEntry_ldeCompProc(const void * r1, + const void * r2) +{ + return LyXDirEntry::ldeCompProc((const LyXDirEntry *)r1, + (const LyXDirEntry *)r2); +} + // *** LyXFileDlg class implementation // static members @@ -296,8 +309,6 @@ void LyXFileDlg::Reread() // factor for what is considered "the future", to // allow for NFS server/client clock disagreement. // Show the year instead of the time of day. -#warning fix! - Time.erase(10, 9); Time.erase(15, string::npos); } else { @@ -363,7 +374,7 @@ void LyXFileDlg::Reread() // Sort the names qsort(pCurrentNames, iNumNames, sizeof(LyXDirEntry), - (int (*)(const void *, const void *))LyXDirEntry::ldeCompProc); + C_LyXDirEntry_ldeCompProc); // Add them to directory box for (i = 0; i < iNumNames; ++i) { @@ -414,27 +425,28 @@ LyXFileDlg::LyXFileDlg() pFileDlgForm = create_form_FileDlg(); // Set callbacks. This means that we don't need a patch file fl_set_object_callback(pFileDlgForm->DirBox, - LyXFileDlg::FileDlgCB,0); + C_LyXFileDlg_FileDlgCB,0); fl_set_object_callback(pFileDlgForm->PatBox, - LyXFileDlg::FileDlgCB,1); + C_LyXFileDlg_FileDlgCB,1); fl_set_object_callback(pFileDlgForm->List, - LyXFileDlg::FileDlgCB,2); + C_LyXFileDlg_FileDlgCB,2); fl_set_object_callback(pFileDlgForm->Filename, - LyXFileDlg::FileDlgCB,3); + C_LyXFileDlg_FileDlgCB,3); fl_set_object_callback(pFileDlgForm->Rescan, - LyXFileDlg::FileDlgCB,10); + C_LyXFileDlg_FileDlgCB,10); fl_set_object_callback(pFileDlgForm->Home, - LyXFileDlg::FileDlgCB,11); + C_LyXFileDlg_FileDlgCB,11); fl_set_object_callback(pFileDlgForm->User1, - LyXFileDlg::FileDlgCB,12); + C_LyXFileDlg_FileDlgCB,12); fl_set_object_callback(pFileDlgForm->User2, - LyXFileDlg::FileDlgCB,13); + C_LyXFileDlg_FileDlgCB,13); // Make sure pressing the close box doesn't crash LyX. (RvdK) - fl_set_form_atclose(pFileDlgForm->FileDlg, CancelCB, 0); + fl_set_form_atclose(pFileDlgForm->FileDlg, + C_LyXFileDlg_CancelCB, 0); // Register doubleclick callback fl_set_browser_dblclick_callback(pFileDlgForm->List, - DoubleClickCB,0); + C_LyXFileDlg_DoubleClickCB,0); } fl_hide_object(pFileDlgForm->User1); fl_hide_object(pFileDlgForm->User2); @@ -561,6 +573,11 @@ void LyXFileDlg::FileDlgCB(FL_OBJECT *, long lArgument) } } +extern "C" void C_LyXFileDlg_FileDlgCB(FL_OBJECT *ob, long data) +{ + LyXFileDlg::FileDlgCB(ob, data); +} + // Handle callback from list void LyXFileDlg::HandleListHit() @@ -583,6 +600,10 @@ void LyXFileDlg::DoubleClickCB(FL_OBJECT *, long) pCurrentDlg->Force(false); } +extern "C" void C_LyXFileDlg_DoubleClickCB(FL_OBJECT *ob, long data) +{ + LyXFileDlg::DoubleClickCB(ob, data); +} // Handle double click from list bool LyXFileDlg::HandleDoubleClick() @@ -687,6 +708,10 @@ int LyXFileDlg::CancelCB(FL_FORM *, void *) return FL_IGNORE; } +extern "C" int C_LyXFileDlg_CancelCB(FL_FORM *fl, void *xev) +{ + return LyXFileDlg::CancelCB(fl, xev); +} // Simulates a click on OK/Cancel void LyXFileDlg::Force(bool cancel)