Fix file opening bugs, IE compatibility issues, and implement auto-incrementing version

This commit is contained in:
hOLOlu
2026-07-06 01:45:47 +03:00
parent 1de2054709
commit baeba9b26b
5 changed files with 306 additions and 235 deletions

View File

@@ -19,6 +19,23 @@ hMarkdown, .NET Framework 4.8 ile geliştirilmiş, kullanıcı dostu ve modern
* **Responsive Adres Çubuğu**: Pencere boyutuna göre otomatik ayarlanan dosya yolu çubuğu.
* **Yardım Dokümantasyonu**: Takıldığınız yerde `F1` tuşu veya yardım butonu ile Markdown komut rehberine ulaşabilirsiniz.
## 🔄 Son Güncellemeler ve İyileştirmeler
### 📂 Dosya Açma ve Çift Tıklama İyileştirmeleri
* **Çift Tıklama Desteği (Windows İlişkilendirmesi)**: Uygulamanın Windows Explorer üzerinden çift tıklatılarak veya parametre verilerek başlatılması tamamen optimize edildi. Dosya yollarındaki tırnak işaretleri (`"`) temizlenir ve boşluklu dosya yolları otomatik olarak birleştirilir.
* **Açılışta Önizleme Yükleme Sorunu**: İlk açılışta önizleme ekranının boş kalması engellendi. `WebBrowser` kontrolü hazır olana kadar bekletilip ardından dosya içeriğinin yüklenmesi sağlandı.
* **Dosya Açma Penceresi Temizliği**: "Gözat" (...) butonuna tıklandığında açılan dosya seçme penceresindeki varsayılan `"openFileDialog"` metni temizlendi.
### 🌐 Tarayıcı ve Performans İyileştirmeleri
* **Modern Tarayıcı Motoru (IE11 Edge Modu)**: Varsayılan olarak eski IE7 modunda çalışan `WebBrowser` kontrolü, program başlangıcında Windows Kayıt Defteri (Registry - HKCU) üzerinden otomatik olarak **IE11 (Edge) moduna** yükseltilir. Bu sayede `highlight.js` ve CSS stilleri kusursuz çalışır.
* **Betik Hatalarının Engellenmesi**: Tarayıcının arka planda üretebileceği script hataları tamamen engellendi (`ScriptErrorsSuppressed = true`), kullanıcıya hata penceresi gösterilmez.
* **Senkron & Titremesiz Önizleme**: Tarayıcıya doğrudan senkron yazma (`Document.Write`) yöntemi kullanılarak sayfa geçişlerindeki titremeler giderildi.
### 🏷️ Sürüm Yönetimi
* **Dinamik Sürüm Bilgisi**: Uygulama sürümü `v1.<yil>.<ay>.<artan build numarası>` (Örn: `1.2026.7.XXXX`) formatına dönüştürüldü. Otomatik artan build numarası aktif edilerek derleme bazlı takip kolaylaştırıldı.
* **Sürüm Gösterimi**: Aktif çalışan uygulama sürümü, pencere başlığında (Title Bar) dinamik olarak gösterilir.
## 🛠️ Kurulum ve Derleme
1. **Depoyu İndirin**: Projeyi bilgisayarınıza klonlayın veya zip olarak indirin.

View File

@@ -9,27 +9,47 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Net.Mime.MediaTypeNames;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.Tab;
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TrayNotify;
namespace hMarkdown
{
public partial class Form1 : Form
{
private string startupFile = "";
public Form1(string fn)
{
InitializeComponent();
webBrowser.ScriptErrorsSuppressed = true;
this.DragEnter += Form1_DragEnter;
this.Resize += Form1_Resize;
this.Load += (s, e) => AdjustDosyaTextBoxWidth();
this.Load += Form1_Load;
if (!string.IsNullOrEmpty(fn)) {
startupFile = fn.Trim('"', ' ');
}
InitializeCustomControls();
SetMode(false);
}
if (fn.Length>0) {
tbDosya.Text = fn;
private void Form1_Load(object sender, EventArgs e)
{
AdjustDosyaTextBoxWidth();
// Set window title with dynamic version
string version = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
this.Text = $"hOLOlu Markdown Viewer (v{version})";
// WebBrowser kontrolünün ActiveX nesnesini ve dokümanını başlatmak için about:blank'e yönlendirip bekliyoruz.
webBrowser.Navigate("about:blank");
while (webBrowser.ReadyState != WebBrowserReadyState.Complete)
{
System.Windows.Forms.Application.DoEvents();
}
if (!string.IsNullOrEmpty(startupFile)) {
tbDosya.Text = startupFile;
DosyaAc();
}
}
@@ -99,7 +119,15 @@ namespace hMarkdown
</div>
</body>
</html>";
if (webBrowser.Document != null)
{
webBrowser.Document.OpenNew(true);
webBrowser.Document.Write(result);
}
else
{
webBrowser.DocumentText = result;
}
//webBrowser.Document.Body.Style.font = "font-family: Tahoma, Threbucet, Verdana; font-size: large;";
//webBrowser.Document.ExecCommand("SelectAll", false, "null");
@@ -109,6 +137,7 @@ namespace hMarkdown
private void tbGozat_Click(object sender, EventArgs e)
{
openFileDialog.FileName = "";
openFileDialog.Filter = "(*.md)|*.md|Tüm Dosyalar (*.*)|*.*";
openFileDialog.FilterIndex = 2;
openFileDialog.RestoreDirectory = true;
@@ -185,12 +214,10 @@ namespace hMarkdown
private void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e)
{
string file = e.Url.LocalPath.ToString();
if (file!="blank")
if (e.Url != null && e.Url.IsFile)
{
tbDosya.Text = file.Replace("file:///", ""); ;
string file = e.Url.LocalPath;
tbDosya.Text = file;
DosyaAc();
}
}

View File

@@ -1,9 +1,11 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Win32;
namespace hMarkdown
{
internal static class Program
@@ -14,9 +16,35 @@ namespace hMarkdown
[STAThread]
static void Main(string[] args)
{
SetBrowserEmulationMode();
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1(args.Length > 0 ? args[0] : ""));
string fn = "";
if (args.Length > 0)
{
fn = string.Join(" ", args);
}
Application.Run(new Form1(fn));
}
private static void SetBrowserEmulationMode()
{
try
{
string appName = System.IO.Path.GetFileName(System.Windows.Forms.Application.ExecutablePath);
using (var key = Registry.CurrentUser.CreateSubKey(
@"Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION",
RegistryKeyPermissionCheck.ReadWriteSubTree))
{
if (key != null)
{
key.SetValue(appName, 11001, RegistryValueKind.DWord);
}
}
}
catch { }
}
}
}

View File

@@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@@ -29,5 +29,4 @@ using System.Runtime.InteropServices;
// Build Number
// Revision
//
[assembly: AssemblyVersion("1.0.1.0")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyVersion("1.2026.7.*")]

View File

@@ -12,7 +12,7 @@
<TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<Deterministic>true</Deterministic>
<Deterministic>false</Deterministic>
<IsWebBootstrapper>false</IsWebBootstrapper>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>