VineSeed ML アーカイブ



[VineSeed:17053] Re: lxpanelの問題点 について

  • From: Toshiharu Kudoh <toshi.kd2@xxxxxxxxx>
  • Subject: [VineSeed:17053] Re: lxpanelの問題点 について
  • Date: Sun, 29 Mar 2009 04:43:38 +0900
工藤です。

lxpanelの問題に関する続報ですが、
取り敢えず自分の環境ではパーセント表示・ピクセル表示を
企図した形で設定できるようになりました。

パーセント表示については、前回書いたような内容で
対処しましたが、ピクセル表示の方はconfigurator.cを
以下のように修正してみました。

if (widthtype == WIDTH_PERCENT) {
gtk_spin_button_set_range( (GtkSpinButton*)spin, 0, 110 );
gtk_spin_button_set_value( (GtkSpinButton*)spin, 110 );
} else if (widthtype == WIDTH_PIXEL) {
gtk_spin_button_set_range( (GtkSpinButton*)spin, 0, gdk_screen_width()+10 );
gtk_spin_button_set_value( (GtkSpinButton*)spin, gdk_screen_width()+10 );
} else

gdk_screen_width()でスクリーン幅を取得し、
設定幅も指定していると判ったので、
gdk_screen_width()で取得された値に+10という形で補正します。
# 原因は判らないものの、gdk_screen_width()で取得される値が
# -10されているため、取得された値に+10すれば正常値です。

以上の修正を適用したバイナリパッケージを作成し、
自分のVineSeed環境の解像度(1280*1024)で実験したところ、
ピクセル指定・パーセント指定ともにフルサイズを指定できるように
なりました。

ただ、他の解像度ではどうなのか判っていません。
そこで、スクリーン幅1280ピクセル以上でテストしている方に
お願いなのですが、現在Seedにあがっているlxpanelのパッケージで、
ピクセル指定がMaxより10ピクセル引かれている値までしか
設定できないか、確認して頂きたいのです。
(ex.1280px → 1270px、1440px → 1430pxとなるかどうか)
自分の環境では、ディスプレイ幅が1280pxまでが限界なので…。

もし、どの解像度でもgdk_screen_width()で取得される値が
一律-10pxなのであれば、今回試した修正で問題ないと思いますので、
この修正を適用したパッケージをputしたいと思います。
よろしくお願いします。
# gtk+2の方も調べるべきなのかも知れませんが、
# そちらまでは流石に調べられませんので。

Toshiharu Kudoh さんは書きました:
> 工藤です。
>
> [VineSeed:17004]で挙げたlxpanelの問題点ですが、
> 僅かながら進展があったのでお知らせします。
>
> lxpanelの問題点とは、[VineSeed:17004]から引用しますと
>
>   
>> 具体的にはパネルを右クリックするとパネルの設定が呼び出されますが、
>> そこで最大幅が90%(パーセント表示の場合、ピクセル表示の場合は
>> 例えば1280x1024環境なら1270pxまでしか指定できない)までしか指定できない
>> というものです。
>> # 初期状態では~/.config/lxpane/default/configは最大幅100%に
>> #なっているのですけど
>> # GUIで設定しようとすると上のような状況になります。
>>     
>
> というものでした。
>
> 取り敢えず判らないなりにソースを斜め読みしていましたが、
> lxpanel-0.3.999/srcにあるconfigurator.cの203〜224行目に
> 以下のような部分があります。
>
> static void set_width_type( GtkWidget *item, Panel* p )
> {
> GtkWidget* spin;
> int widthtype;
> gboolean t;
> widthtype = gtk_combo_box_get_active(GTK_COMBO_BOX(item)) + 1;
> p->widthtype = widthtype;
>
> spin = (GtkWidget*)g_object_get_data(item, "width_spin" );
> t = (widthtype != WIDTH_REQUEST);
> gtk_widget_set_sensitive( spin, t );
> if (widthtype == WIDTH_PERCENT) {
> gtk_spin_button_set_range( (GtkSpinButton*)spin, 0, 100 );
> gtk_spin_button_set_value( (GtkSpinButton*)spin, 100 );
> } else if (widthtype == WIDTH_PIXEL) {
> gtk_spin_button_set_range( (GtkSpinButton*)spin, 0, gdk_screen_width() );
> gtk_spin_button_set_value( (GtkSpinButton*)spin, gdk_screen_width() );
> } else
> return;
>
> update_panel_geometry(p);
> }
>
> このWIDTH_PERCENTでどうやらパーセント表示の値を設定しているようですが、
> 100という値を110にしてビルドすると、パネルは100%まで指定できるように
> なりました。一方、WIDTH_PIXELの方は修正の仕方がよく判らなかったので
> まだ目処はたっていません。判る方がおられたらご教授願います。
>
> 以上の修正方法が適当かどうかは判りませんが、試した方法からは
> gtk+2.16.0との関連でこのような状況になっているという可能性が高いと
> 考えられます。
>
> 取り敢えず、今回試したことは以上です。
>
>
>