Bug 297 and to some degree bug 202 are caused by differences in the handling of Save As from Save Link As and Save Image As. In BrowserView.cpp the latter two functions (OnSaveLinkAs and OnSaveImageAs) have simpler code which ultimately call a function URISaveAs. Why can't the function OnFileSaveAs be implemented similarly ? In Netscape 4.x, Mozilla, and Opera, the save as function (Ctrl-S) uses the filename NOT the page title in the save as dialog and the file type is derived from the extension. Currently K-Meleon's Save As functionality is uninituitive and inconsistent with Save Link As and Save Image As, both of which work as expected. As it stands now whenever I want to save a page I either have to go back to get the link to the page or use the global history so I can use Save Link As which is a very inconvenient way of working.
Note I'm an assembly language and C programmer not a C++ programmer so this may not be quite correct but it should be close to what's needed. It's based on the existing OnSaveLinkAs/OnSaveImageAs functions and uses code from OnViewSource to get the current URL into variable currentURI which is passed to URISaveAs. This code is much simpler than what's there now which doesn't work as expected.
void CBrowserView:

nFileSaveAs()
{
// Try to get the file name part from the URL
// To do that we first construct an obj which supports
// nsIRUI interface. Makes it easy to extract portions
// of a URL like the filename, scheme etc. + We'll also
// use it while saving this link to a file
nsresult rv = NS_OK;
nsCOMPtr<nsIURI> currentURI;
rv = mWebNav->GetCurrentURI(getter_AddRefs(currentURI));
if(NS_FAILED(rv) || !currentURI)
return;
URISaveAs(currentURI);
}