[gnumeric] SheetControlGUI: Fix potential crasher.
- From: Morten Welinder <mortenw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnumeric] SheetControlGUI: Fix potential crasher.
- Date: Sun, 27 Dec 2015 01:39:46 +0000 (UTC)
commit 476f2c14ec52092c37db7f53cdfde386de6bdb3f
Author: Morten Welinder <terra gnome org>
Date: Sat Dec 26 20:38:47 2015 -0500
SheetControlGUI: Fix potential crasher.
We're not derived from GtkWidget, so casting the class to that and
setting vtable entries will not end well.
ChangeLog | 4 ++++
NEWS | 3 +++
src/sheet-control-gui.c | 32 +++++++++++++++++---------------
3 files changed, 24 insertions(+), 15 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index b34ddc0..eda8ff5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
2015-12-26 Morten Welinder <terra gnome org>
+ * src/sheet-control-gui.c (sheet_control_gui_new): Hook up screen
+ change here (on the grid).
+ (scg_class_init): Not here. We're not derived from GtkWidget.
+
* src/sheet-style.c (foreach_tile_r): Rename from foreach_tile.
(foreach_tile): New top-level function taking few parameters. All
callers changed.
diff --git a/NEWS b/NEWS
index 56218d1..fdb2c2c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,8 @@
Gnumeric 1.12.26
+Morten:
+ * Fix potential crasher on showing initial window.
+
--------------------------------------------------------------------------
Gnumeric 1.12.25
diff --git a/src/sheet-control-gui.c b/src/sheet-control-gui.c
index 276bc32..fff1753 100644
--- a/src/sheet-control-gui.c
+++ b/src/sheet-control-gui.c
@@ -1565,6 +1565,18 @@ sheet_object_key_pressed (G_GNUC_UNUSED GtkWidget *w, GdkEventKey *event, SheetC
return TRUE;
}
+static void
+cb_screen_changed (GtkWidget *widget, G_GNUC_UNUSED GdkScreen *prev,
+ SheetControlGUI *scg)
+{
+ GdkScreen *screen = gtk_widget_get_screen (widget);
+
+ if (screen) {
+ scg->screen_width = gdk_screen_get_width (screen);
+ scg->screen_height = gdk_screen_get_height (screen);
+ }
+}
+
SheetControlGUI *
sheet_control_gui_new (SheetView *sv, WBCGtk *wbcg)
{
@@ -1765,6 +1777,11 @@ sheet_control_gui_new (SheetView *sv, WBCGtk *wbcg)
NULL);
g_object_ref (scg->label);
+ g_signal_connect (G_OBJECT (scg->grid),
+ "screen-changed",
+ G_CALLBACK (cb_screen_changed),
+ scg);
+
return scg;
}
@@ -3886,22 +3903,9 @@ scg_show_im_tooltip (SheetControl *sc, GnmInputMsg *im, GnmCellPos *pos)
static void
-scg_screen_changed (GtkWidget *widget, G_GNUC_UNUSED GdkScreen *prev)
-{
- SheetControlGUI *scg = (SheetControlGUI *)widget;
- GdkScreen *screen = gtk_widget_get_screen (widget);
-
- if (screen) {
- scg->screen_width = gdk_screen_get_width (screen);
- scg->screen_height = gdk_screen_get_height (screen);
- }
-}
-
-static void
scg_class_init (GObjectClass *object_class)
{
SheetControlClass *sc_class = SHEET_CONTROL_CLASS (object_class);
- GtkWidgetClass *wclass = (GtkWidgetClass *)object_class;
g_return_if_fail (sc_class != NULL);
@@ -3909,8 +3913,6 @@ scg_class_init (GObjectClass *object_class)
object_class->finalize = scg_finalize;
- wclass->screen_changed = scg_screen_changed;
-
sc_class->resize = scg_resize_virt;
sc_class->redraw_all = scg_redraw_all;
sc_class->redraw_range = scg_redraw_range;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]