瀏覽代碼

deal with gtk errors. problem with gtk 1.2.10?

David Rose 23 年之前
父節點
當前提交
f6529129e0

+ 18 - 19
pandatool/src/gtk-stats/gtkStatsGuide.cxx

@@ -33,10 +33,7 @@ GtkStatsGuide(PStatStripChart *chart) :
 
 
   // Choose a suitable minimum width.  This requires knowing what the
   // Choose a suitable minimum width.  This requires knowing what the
   // font will be.
   // font will be.
-  Gdk_GC fg_gc =
-    get_style()->gtkobj()->fg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
-
-  Gdk_Font font = fg_gc.get_font();
+  Gdk_Font font = get_style()->gtkobj()->font;
   int text_width = font.string_width("0000");
   int text_width = font.string_width("0000");
   set_usize(text_width, 0);
   set_usize(text_width, 0);
 }
 }
@@ -67,21 +64,23 @@ expose_event_impl(GdkEventExpose *event) {
   Gdk_GC bg_gc =
   Gdk_GC bg_gc =
     get_style()->gtkobj()->bg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
     get_style()->gtkobj()->bg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
 
 
-  Gdk_Window window = get_window();
-  window.draw_rectangle(bg_gc, true, 0, 0, width(), height());
-
-  Gdk_Font font = fg_gc.get_font();
-  int text_ascent = font.ascent();
-
-  int num_guide_bars = _chart->get_num_guide_bars();
-  for (int i = 0; i < num_guide_bars; i++) {
-    const PStatStripChart::GuideBar &bar = _chart->get_guide_bar(i);
-    int y = _chart->height_to_pixel(bar._height);
-
-    if (y >= 5) {
-      // Only draw it if it's not too close to the top.
-      window.draw_string(font, fg_gc, 0, y + text_ascent / 2,
-                         bar._label);
+  if (fg_gc && bg_gc) {
+    Gdk_Window window = get_window();
+    window.draw_rectangle(bg_gc, true, 0, 0, width(), height());
+    
+    Gdk_Font font = fg_gc.get_font();
+    int text_ascent = font.ascent();
+    
+    int num_guide_bars = _chart->get_num_guide_bars();
+    for (int i = 0; i < num_guide_bars; i++) {
+      const PStatStripChart::GuideBar &bar = _chart->get_guide_bar(i);
+      int y = _chart->height_to_pixel(bar._height);
+      
+      if (y >= 5) {
+        // Only draw it if it's not too close to the top.
+        window.draw_string(font, fg_gc, 0, y + text_ascent / 2,
+                           bar._label);
+      }
     }
     }
   }
   }
 
 

+ 3 - 10
pandatool/src/gtk-stats/gtkStatsPianoRoll.cxx

@@ -119,9 +119,7 @@ void GtkStatsPianoRoll::
 begin_draw() {
 begin_draw() {
   _pixmap.draw_rectangle(_white_gc, true, 0, 0, get_xsize(), get_ysize());
   _pixmap.draw_rectangle(_white_gc, true, 0, 0, get_xsize(), get_ysize());
 
 
-  Gdk_GC fg_gc =
-    get_style()->gtkobj()->fg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
-  Gdk_Font font = fg_gc.get_font();
+  Gdk_Font font = get_style()->gtkobj()->font;
   int text_height = font.height();
   int text_height = font.height();
 
 
   // Draw in the guide bars.
   // Draw in the guide bars.
@@ -167,9 +165,7 @@ end_draw() {
   // Draw in the labels for the guide bars.  We do this in end_draw()
   // Draw in the labels for the guide bars.  We do this in end_draw()
   // instead of in begin_draw() so the labels will appear on top of
   // instead of in begin_draw() so the labels will appear on top of
   // any of the color bars.
   // any of the color bars.
-  Gdk_GC fg_gc =
-    get_style()->gtkobj()->fg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
-  Gdk_Font font = fg_gc.get_font();
+  Gdk_Font font = get_style()->gtkobj()->font;
   int text_ascent = font.ascent();
   int text_ascent = font.ascent();
 
 
   int num_guide_bars = get_num_guide_bars();
   int num_guide_bars = get_num_guide_bars();
@@ -277,10 +273,7 @@ pack_labels() {
   _label_box->show();
   _label_box->show();
   _label_align->add(*_label_box);
   _label_align->add(*_label_box);
 
 
-  Gdk_GC window_gc =
-    get_style()->gtkobj()->fg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
-  Gdk_Font font = window_gc.get_font();
-
+  Gdk_Font font = get_style()->gtkobj()->font;
   int num_labels = get_num_labels();
   int num_labels = get_num_labels();
 
 
   while ((int)_y_positions.size() < num_labels) {
   while ((int)_y_positions.size() < num_labels) {

+ 4 - 6
pandatool/src/gtk-stats/gtkStatsStripChart.cxx

@@ -374,9 +374,7 @@ pack_labels() {
   _label_box->show();
   _label_box->show();
   _label_align->add(*_label_box);
   _label_align->add(*_label_box);
 
 
-  Gdk_GC window_gc =
-    get_style()->gtkobj()->fg_gc[GTK_WIDGET_STATE (GTK_WIDGET(gtkobj()))];
-  Gdk_Font font = window_gc.get_font();
+  Gdk_Font font = get_style()->gtkobj()->font;
 
 
   int num_labels = get_num_labels();
   int num_labels = get_num_labels();
   for (int i = 0; i < num_labels; i++) {
   for (int i = 0; i < num_labels; i++) {
@@ -384,12 +382,12 @@ pack_labels() {
     GtkStatsLabel *label =
     GtkStatsLabel *label =
       new GtkStatsLabel(get_monitor(), collector_index, font);
       new GtkStatsLabel(get_monitor(), collector_index, font);
     label->show();
     label->show();
-
+    
     label->collector_picked.connect(collector_picked.slot());
     label->collector_picked.connect(collector_picked.slot());
-
+    
     _label_box->pack_end(*manage(label), false, false);
     _label_box->pack_end(*manage(label), false, false);
   }
   }
-
+  
   _labels_changed = false;
   _labels_changed = false;
 }
 }