稲地です。

From: Yasushi Shoji <yashi / yashi.com>
Subject: [ruby-ext:01207] Re: Style の指定について
Date: Sun, 20 Aug 2000 13:11:57 -0400
Message-ID: <20000820131157U.yashi / yashi.com>

> > > うちでも、なりますし、Cでもなりますね。
> > 
> > GTK+ のプログラムではデフォルトスタイルをコピーしてから
> > 変更したいものを設定するもの多いのですが、そのように
> > すると C ではウィジェットが指定したスタイルになりました。
> > ところが Ruby/GTK だと何故かうまくいかないんですね。
> 
> これ、どうやったか教えてもらえますか?

あ、今確認したらデフォルトスタイルをコピーしなくても大丈夫でした。
環境の問題かな? 私の環境は Vine Linux 2.0 (gtk+ は 1.2.7)です。

C で確認したリストを付けます(フォントは確認してません)。

-------------------------------------
#include <gtk/gtk.h>

GdkColor fgc = { 0, 10000, 50000, 60000 };
GdkColor bgc = { 0, 65535, 50000, 50000 };

int
main(int argc, char* argv[])
{
  GtkWidget *window, *button;
  GtkStyle *defstyle, *style;

  gtk_init(&argc, &argv);

  window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

#ifdef STYLECOPY
  defstyle = gtk_widget_get_default_style();
  style = gtk_style_copy(defstyle);
#else
  style = gtk_style_new();
#endif
  style->fg[GTK_STATE_NORMAL] = fgc;
  style->text[GTK_STATE_NORMAL] = fgc;
  style->bg[GTK_STATE_NORMAL] = bgc;

  gtk_widget_push_style(style);
  button = gtk_button_new_with_label("Hello World");
  gtk_widget_pop_style();

  gtk_container_add(GTK_CONTAINER(window), button);
  gtk_widget_show(button);
  gtk_widget_show(window);

  gtk_main();

  return 0;
}