BlinkGTK Navigation API リファレンス

バージョン: 1.2.0-build2
最終更新: 2026-07-29
言語: 日本語 |

English


概要

Navigation APIは、ブラウザの履歴移動とページ制御を行うためのAPIです。

特徴:

利用可能なバージョン: v1.1.0 以降


API一覧

機能 関数名 戻り値 デフォルト動作
戻る blink_web_view_go_back() なし 履歴を1つ戻る
進む blink_web_view_go_forward() なし 履歴を1つ進む
リロード blink_web_view_reload() なし 現在のページを再読み込み
停止 blink_web_view_stop() なし ページ読み込みを停止
戻れるか確認 blink_web_view_can_go_back() gboolean 履歴があるかチェック
進めるか確認 blink_web_view_can_go_forward() gboolean 前方履歴があるかチェック

履歴移動

履歴を1つ戻ります。

シグネチャ:

void blink_web_view_go_back(BlinkWebView* web_view);

パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | GtkWidget* | BlinkWebViewウィジェット |

戻り値: なし

動作:

使用例:

// 戻るボタンのコールバック
static void on_back_button_clicked(GtkButton* button, gpointer user_data) {
    GtkWidget* web_view = GTK_WIDGET(user_data);
    blink_web_view_go_back(web_view);
}

// ボタンに接続
GtkWidget* back_button = gtk_button_new_from_icon_name("go-previous");
g_signal_connect(back_button, "clicked",
                 G_CALLBACK(on_back_button_clicked), web_view);

WebKitGTK互換:

// WebKitGTK
webkit_web_view_go_back(WEBKIT_WEB_VIEW(web_view));

// BlinkGTK(同等)
blink_web_view_go_back(web_view);

利用可能バージョン: v1.1.0 以降


履歴を1つ進みます。

シグネチャ:

void blink_web_view_go_forward(BlinkWebView* web_view);

パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | GtkWidget* | BlinkWebViewウィジェット |

戻り値: なし

動作:

使用例:

// 進むボタンのコールバック
static void on_forward_button_clicked(GtkButton* button, gpointer user_data) {
    GtkWidget* web_view = GTK_WIDGET(user_data);
    blink_web_view_go_forward(web_view);
}

// ボタンに接続
GtkWidget* forward_button = gtk_button_new_from_icon_name("go-next");
g_signal_connect(forward_button, "clicked",
                 G_CALLBACK(on_forward_button_clicked), web_view);

WebKitGTK互換:

// WebKitGTK
webkit_web_view_go_forward(WEBKIT_WEB_VIEW(web_view));

// BlinkGTK(同等)
blink_web_view_go_forward(web_view);

利用可能バージョン: v1.1.0 以降


ページ制御

現在のページを再読み込みします。

シグネチャ:

void blink_web_view_reload(BlinkWebView* web_view);

パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | GtkWidget* | BlinkWebViewウィジェット |

戻り値: なし

動作:

使用例:

// リロードボタンのコールバック
static void on_reload_button_clicked(GtkButton* button, gpointer user_data) {
    GtkWidget* web_view = GTK_WIDGET(user_data);
    blink_web_view_reload(web_view);
}

// ボタンに接続
GtkWidget* reload_button = gtk_button_new_from_icon_name("view-refresh");
g_signal_connect(reload_button, "clicked",
                 G_CALLBACK(on_reload_button_clicked), web_view);

実用例 - Settings変更後のリロード:

// Settings変更後にページをリロードして反映
static void on_js_toggle(GtkToggleButton* button, gpointer user_data) {
    GtkWidget* web_view = GTK_WIDGET(user_data);
    gboolean active = gtk_toggle_button_get_active(button);

    blink_web_view_set_javascript_enabled(web_view, active);
    blink_web_view_reload(web_view);  // 設定を反映
}

WebKitGTK互換:

// WebKitGTK
webkit_web_view_reload(WEBKIT_WEB_VIEW(web_view));

// BlinkGTK(同等)
blink_web_view_reload(web_view);

利用可能バージョン: v1.1.0 以降


ページの読み込みを停止します。

シグネチャ:

void blink_web_view_stop(BlinkWebView* web_view);

パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | GtkWidget* | BlinkWebViewウィジェット |

戻り値: なし

動作:

使用例:

// 停止ボタンのコールバック
static void on_stop_button_clicked(GtkButton* button, gpointer user_data) {
    GtkWidget* web_view = GTK_WIDGET(user_data);
    blink_web_view_stop(web_view);
}

// ボタンに接続
GtkWidget* stop_button = gtk_button_new_from_icon_name("process-stop");
g_signal_connect(stop_button, "clicked",
                 G_CALLBACK(on_stop_button_clicked), web_view);

実用例 - タイムアウト処理:

// 10秒でタイムアウト
static gboolean on_load_timeout(gpointer user_data) {
    GtkWidget* web_view = GTK_WIDGET(user_data);
    blink_web_view_stop(web_view);
    g_print("Loading timed out\n");
    return G_SOURCE_REMOVE;
}

// load-changedシグナルで開始
static void on_load_changed(GtkWidget* web_view,
                            BlinkLoadEvent event,
                            gpointer user_data) {
    if (event == BLINK_LOAD_STARTED) {
        g_timeout_add_seconds(10, on_load_timeout, web_view);
    }
}

WebKitGTK互換:

// WebKitGTK
webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(web_view));

// BlinkGTK(同等)
blink_web_view_stop(web_view);

注意: WebKitGTKのwebkit_web_view_stop_loading()に対応しますが、関数名がstop()に短縮されています。

利用可能バージョン: v1.1.0 以降


履歴状態確認

履歴を戻れるかどうかを確認します。

シグネチャ:

gboolean blink_web_view_can_go_back(BlinkWebView* web_view);

パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | GtkWidget* | BlinkWebViewウィジェット |

戻り値: gboolean - TRUE = 戻れる、FALSE = 戻れない

使用例:

// 戻るボタンの有効/無効を設定
static void update_back_button_sensitivity(GtkWidget* web_view,
                                           GtkWidget* back_button) {
    gboolean can_back = blink_web_view_can_go_back(web_view);
    gtk_widget_set_sensitive(back_button, can_back);
}

// load-changedシグナルで更新
static void on_load_changed(GtkWidget* web_view,
                            BlinkLoadEvent event,
                            gpointer user_data) {
    if (event == BLINK_LOAD_FINISHED) {
        GtkWidget* back_button = GTK_WIDGET(user_data);
        update_back_button_sensitivity(web_view, back_button);
    }
}

実用例 - ナビゲーションボタンの管理:

typedef struct {
    GtkWidget* back_button;
    GtkWidget* forward_button;
} NavButtons;

static void update_navigation_buttons(GtkWidget* web_view,
                                      NavButtons* buttons) {
    gtk_widget_set_sensitive(buttons->back_button,
                            blink_web_view_can_go_back(web_view));
    gtk_widget_set_sensitive(buttons->forward_button,
                            blink_web_view_can_go_forward(web_view));
}

WebKitGTK互換:

// WebKitGTK
gboolean can_back = webkit_web_view_can_go_back(WEBKIT_WEB_VIEW(web_view));

// BlinkGTK(同等)
gboolean can_back = blink_web_view_can_go_back(web_view);

利用可能バージョン: v1.1.0 以降


前方履歴があるかどうかを確認します。

シグネチャ:

gboolean blink_web_view_can_go_forward(BlinkWebView* web_view);

パラメータ:
| パラメータ | 型 | 説明 |
|-----------|---|------|
| web_view | GtkWidget* | BlinkWebViewウィジェット |

戻り値: gboolean - TRUE = 進める、FALSE = 進めない

使用例:

// 進むボタンの有効/無効を設定
static void update_forward_button_sensitivity(GtkWidget* web_view,
                                              GtkWidget* forward_button) {
    gboolean can_forward = blink_web_view_can_go_forward(web_view);
    gtk_widget_set_sensitive(forward_button, can_forward);
}

WebKitGTK互換:

// WebKitGTK
gboolean can_forward = webkit_web_view_can_go_forward(WEBKIT_WEB_VIEW(web_view));

// BlinkGTK(同等)
gboolean can_forward = blink_web_view_can_go_forward(web_view);

利用可能バージョン: v1.1.0 以降


実用的な組み合わせ例

完全なナビゲーションツールバー

typedef struct {
    GtkWidget* web_view;
    GtkWidget* back_button;
    GtkWidget* forward_button;
    GtkWidget* reload_button;
    GtkWidget* stop_button;
} BrowserWidgets;

// ナビゲーションボタンの状態更新
static void update_nav_buttons(BrowserWidgets* widgets) {
    gtk_widget_set_sensitive(widgets->back_button,
                            blink_web_view_can_go_back(widgets->web_view));
    gtk_widget_set_sensitive(widgets->forward_button,
                            blink_web_view_can_go_forward(widgets->web_view));
}

// load-changedコールバック
static void on_load_changed(GtkWidget* web_view,
                            BlinkLoadEvent event,
                            gpointer user_data) {
    BrowserWidgets* widgets = (BrowserWidgets*)user_data;

    if (event == BLINK_LOAD_STARTED) {
        gtk_widget_set_sensitive(widgets->stop_button, TRUE);
        gtk_widget_set_sensitive(widgets->reload_button, FALSE);
    } else if (event == BLINK_LOAD_FINISHED) {
        gtk_widget_set_sensitive(widgets->stop_button, FALSE);
        gtk_widget_set_sensitive(widgets->reload_button, TRUE);
        update_nav_buttons(widgets);
    }
}

// ボタンコールバック
static void on_back_clicked(GtkButton* button, gpointer user_data) {
    BrowserWidgets* widgets = (BrowserWidgets*)user_data;
    blink_web_view_go_back(widgets->web_view);
}

static void on_forward_clicked(GtkButton* button, gpointer user_data) {
    BrowserWidgets* widgets = (BrowserWidgets*)user_data;
    blink_web_view_go_forward(widgets->web_view);
}

static void on_reload_clicked(GtkButton* button, gpointer user_data) {
    BrowserWidgets* widgets = (BrowserWidgets*)user_data;
    blink_web_view_reload(widgets->web_view);
}

static void on_stop_clicked(GtkButton* button, gpointer user_data) {
    BrowserWidgets* widgets = (BrowserWidgets*)user_data;
    blink_web_view_stop(widgets->web_view);
}

WebKitGTK移行ガイド

API対応表

WebKitGTK BlinkGTK 互換性
webkit_web_view_go_back() blink_web_view_go_back() 同じ動作
webkit_web_view_go_forward() blink_web_view_go_forward() 同じ動作
webkit_web_view_reload() blink_web_view_reload() 同じ動作
webkit_web_view_stop_loading() blink_web_view_stop() 対応 互換(関数名変更)
webkit_web_view_can_go_back() blink_web_view_can_go_back() 同じ動作
webkit_web_view_can_go_forward() blink_web_view_can_go_forward() 同じ動作

移行例

Before (WebKitGTK):

webkit_web_view_go_back(WEBKIT_WEB_VIEW(web_view));
webkit_web_view_go_forward(WEBKIT_WEB_VIEW(web_view));
webkit_web_view_reload(WEBKIT_WEB_VIEW(web_view));
webkit_web_view_stop_loading(WEBKIT_WEB_VIEW(web_view));

After (BlinkGTK):

blink_web_view_go_back(web_view);
blink_web_view_go_forward(web_view);
blink_web_view_reload(web_view);
blink_web_view_stop(web_view);  // 関数名が変更

関連ドキュメント


バージョン履歴

バージョン リリース日 変更内容
v0.9.28-dev 2026-01-01 Build 174: Navigation APIドキュメント完成
v0.9.0-dev 2025-10-24 Build 106: Navigation API実装

ライセンス: BSD-3-Clause
プロジェクト: BlinkGTK
メンテナー: BlinkGTK Lead daisy19@gmail.com