7

電子回路図を編集するためのフリー ソフトウェア ツールであるgschemに取り組んでいます。最近、 GtkTextViewを含むGtkScrolledWindowを使用して問題が発生しました。

環境

Ubuntu の最近のバージョンでは、オーバーレイ スクロールバーが使用されています。つまり、GtkScrolledWindows は、従来のスクロールバーに十分なスペースを提供する最小の高さを設定しなくなりました (実際、最小の高さは 0 です)。同様に、表示するテキストのない GtkTextView は高さ 0 を要求します。これは、gschem のスクロール可能な GtkTextView の 1 つが高さ 1 ピクセルで表示されていることを意味し、これは明らかに使用できません。

壊れていることを示すスクリーンショット

上記のスクリーンショットの右側にあるダイアログ ボックスで、「値:」ラベルと「追加」ボタンの間にウィジェットが表示されていないことに注意してください。

これは複数のユーザーから個別に報告されています -バグレポートも参照してください。

質問

明らかに、次のようにしてこれを修正できます。

g_object_set (textview, "height-request", 100, NULL);

ただし、これは非常に洗練されておらず、ピクセル単位で非常に大きなフォント サイズを設定しているユーザー (視覚に問題のあるユーザーや高 DPI 画面を使用しているユーザーなど) には機能しません。

したがって、理想的には、GtkTextView の最小サイズをデフォルトのフォント サイズに相対的に設定する必要があります。たとえば、「少なくとも 3 行のテキストを表示する」ように指示します。

これを行うための賢明でエレガントなアプローチを提案できる人はいますか?

4

4 に答える 4

2

次のようにして、アプリケーションの ubuntu オーバーレイ スクロールバーを無効にするだけです。

putenv("LIBOVERLAY_SCROLLBAR=0");

理想的ではありませんが、より恒久的な解決策が見つかるまでは非常に良い方法です。または、Ubuntuがオーバーレイスクロールバーを無効にするまで待ちます...

于 2011-12-19T21:20:14.863 に答える
0

現在/デフォルトのスタイル情報を掘り下げるコードを追加し、それを使用してフォントのベースラインの高さを把握し、それに基づいて大まかなサイズの割り当てを計算します.3行ほどです.

于 2011-12-22T10:08:54.567 に答える
0

同様に、表示するテキストがない GtkTextView は高さ 0 を要求します。

おそらく、内部にテキストを含む GtkTextView を作成できます。複数のスペースと同様に、作成後に空の値を設定します。

于 2013-03-30T10:33:34.947 に答える
0

それは textview である必要がありますか?代わりにイベント ボックスを使用できる場合は、そこからカイロ サーフェスを作成し、pango でテキストをレンダリングしてから、pango_layout_get_size() を使用してテキストの高さを取得できます。

于 2012-02-11T15:23:48.463 に答える