バージョン: 1.2.0-build2
最終更新: 2026-07-29
言語: 日本語 |
Navigation APIは、ブラウザの履歴移動とページ制御を行うためのAPIです。
特徴:
blink_
接頭辞。対応表は後半)利用可能なバージョン: v1.1.0 以降
| 機能 | 関数名 | 戻り値 | デフォルト動作 |
|---|---|---|---|
| 戻る | 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 | 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