conky スクリプトのユーザーを支援するために、C で gtk2 アプリ (Conky Companion) を開発しました。
比較的簡単に独自の conkyrc を作成できます。メイン画面のスクリーンショットは次のとおりです。
ユーザーは、アイコンまたはラベルを右側から左側にドラッグ アンド ドロップし、移動、サイズ変更、サイズや色の変更などを行うことができます。満足したら、生成ボタンを押して conkyrc ファイルを生成できます。
画面は、サイズ変更不可の上部ウィンドウで、テーブルが表示されます。テーブルの2面は枠になっており、中には定置のコンテナが置かれています。
上のスクリーンショットからわかるように、誰かが左フレーム/固定コンテナーの右または下の境界にアイコンまたはラベルを配置しようとすると、ウィジェットは境界から外れます。
現在、アプリを Gtk3 に移植しようとしていますが、奇妙な問題に直面しています。
ユーザーが左フレーム/固定コンテナーの右または下の境界線にオブジェクトを配置または移動しようとすると、新しく配置されたウィジェットに合わせてサイズが変更されます。
オブジェクトを左 (または上) に移動すると、フレームは gtk_widget_set_size_request で定義されたサイズに戻ります。
固定コンテナーを作成する方法はありますか? サイズを変更したくありません。
フレームと固定コンテナーをウィンドウに配置するコードは次のとおりです。
/* LEFT FRAME */
frame1= gtk_frame_new(NULL);
gtk_table_attach(GTK_TABLE(table), frame1, 0,14,0,49,GTK_SHRINK,GTK_SHRINK,0,0);
gtk_widget_set_size_request(frame1, 360,570);
gtk_widget_show(frame1);
/* LEFT FRAME - FIXED CONTAINER */
fixed1 = gtk_fixed_new();
gtk_widget_set_has_window(fixed1,TRUE);
gtk_container_add(GTK_CONTAINER(frame1),fixed1);
gtk_widget_modify_bg (fixed1, GTK_STATE_NORMAL, &color);
gtk_drag_dest_set (
fixed1, GTK_DEST_DEFAULT_ALL,
target_list, 1, GDK_ACTION_COPY|GDK_ACTION_MOVE);
g_signal_connect (fixed1, "drag-drop",G_CALLBACK (dr_data_rec_1d1), (gpointer)fixed1);
gtk_widget_show(fixed1);
私は次のことを試しました:
1) フレームの配置のために GTK_EXPAND と GTK_FILL をいじる。変化なし。
2) ウィンドウ、テーブル、フレーム、および固定コンテナーの gtk_window_set_geometry_hints。変化なし。
3) gtk_table を gtk_grid に置き換えます。変化なし。
私は何をすべきか、何を検索すべきかについて非常に途方に暮れています。問題がウィンドウ、テーブル、フレーム、固定コンテナーにあるのか、それとも不明瞭なドラッグ アンド ドロップ設定にあるのかさえわかりません。
ヒントをお待ちしております。解決策が簡単または明白である場合は申し訳ありません。