Add few improvements on galt_gendo patch
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 12 Feb 2016 19:18:09 +0000 (21:18 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Fri, 12 Feb 2016 19:18:09 +0000 (21:18 +0200)
- added safeguards on arguments for lxpanel_get_preferred_* callbacks
- added comments about missing get_preferred_* callbacks in NetstatusIcon
- simplified variations "expose-event" vs "draw" callbacks for easier review later

AUTHORS
plugins/cpu/cpu.c
plugins/launchtaskbar.c
plugins/monitors/monitors.c
plugins/netstatus/netstatus-icon.c
src/panel.c

diff --git a/AUTHORS b/AUTHORS
index c97ec8c..b60fb17 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -15,6 +15,8 @@ LXPanel - Lightweight X11 desktop panel
     Piotr Sipika <piotr.sipika@gmail.com>
     Raimar Bühmann <raimar@buehmann.de>
     Peter <ombalaxitabou@users.sf.net>
+    Balló György <ballogyor@gmail.com>
+    Rafał Mużyło <galtgendo@gmail.com>
 
 [History]
 LXPanel is a derivative work from fbpanel [1] written by Anatoly Asviyan,
index f7290eb..0d941d5 100644 (file)
@@ -9,6 +9,7 @@
  *               2012-2013 Henry Gebhardt <hsggebhardt@gmail.com>
  *               2013 Marko Rauhamaa <marko@pacujo.net>
  *               2014 Andriy Grytsenko <andrej@rep.kiev.ua>
+ *               2015 Rafał Mużyło <galtgendo@gmail.com>
  *
  * This file is a part of LXPanel project.
  *
@@ -223,40 +224,33 @@ static gboolean configure_event(GtkWidget * widget, GdkEventConfigure * event, C
 /* Handler for expose_event on drawing area. */
 #if !GTK_CHECK_VERSION(3, 0, 0)
 static gboolean expose_event(GtkWidget * widget, GdkEventExpose * event, CPUPlugin * c)
+#else
+static gboolean draw(GtkWidget * widget, cairo_t * cr, CPUPlugin * c)
+#endif
 {
     /* Draw the requested part of the pixmap onto the drawing area.
      * Translate it in both x and y by the border size. */
     if (c->pixmap != NULL)
     {
+#if !GTK_CHECK_VERSION(3, 0, 0)
         cairo_t * cr = gdk_cairo_create(gtk_widget_get_window(widget));
         GtkStyle * style = gtk_widget_get_style(c->da);
         gdk_cairo_region(cr, event->region);
         cairo_clip(cr);
         gdk_cairo_set_source_color(cr, &style->black);
-        cairo_set_source_surface(cr, c->pixmap,
-              BORDER_SIZE, BORDER_SIZE);
-        cairo_paint(cr);
-        /* check_cairo_status(cr); */
-        cairo_destroy(cr);
-    }
-    return FALSE;
-}
 #else
-static gboolean draw(GtkWidget * widget, cairo_t * cr, CPUPlugin * c)
-{
-    /* Draw the requested part of the pixmap onto the drawing area.
-     * Translate it in both x and y by the border size. */
-    if (c->pixmap != NULL)
-    {
-        cairo_set_source_rgb(cr, 0, 0, 0);
+        cairo_set_source_rgb(cr, 0, 0, 0); // FIXME: use black color from style
+#endif
         cairo_set_source_surface(cr, c->pixmap,
               BORDER_SIZE, BORDER_SIZE);
         cairo_paint(cr);
         /* check_cairo_status(cr); */
+#if !GTK_CHECK_VERSION(3, 0, 0)
+        cairo_destroy(cr);
+#endif
     }
     return FALSE;
 }
-#endif
 
 /* Plugin constructor. */
 static GtkWidget *cpu_constructor(LXPanel *panel, config_setting_t *settings)
index ace6e00..480b64b 100644 (file)
@@ -16,6 +16,7 @@
  *               2014 Vladimír Pýcha <vpycha@gmail.com>
  *               2014 Raimar Bühmann <raimar@buehmann.de>
  *               2014 Andy Balaam <axis3x3@users.sf.net>
+ *               2015 Rafał Mużyło <galtgendo@gmail.com>
  *
  * This file is a part of LXPanel project.
  *
index 3bca6b4..403930b 100644 (file)
@@ -10,6 +10,7 @@
  *               2012-2014 Henry Gebhardt <hsggebhardt@googlemail.com>
  *               2012 Rafał Mużyło <galtgendo@gmail.com>
  *               2014 Andriy Grytsenko <andrej@rep.kiev.ua>
+ *               2015 Rafał Mużyło <galtgendo@gmail.com>
  *
  * <terms>
  * Copyright (c) 2008-2014 LxDE Developers, see the file AUTHORS for details.
@@ -178,13 +179,13 @@ monitor_init(MonitorsPlugin *mp, Monitor *m, gchar *color)
     /* Signals */
     g_signal_connect(G_OBJECT(m->da), "configure-event",
         G_CALLBACK(configure_event), (gpointer) m);
-    #if !GTK_CHECK_VERSION(3, 0, 0)
+#if !GTK_CHECK_VERSION(3, 0, 0)
     g_signal_connect (G_OBJECT(m->da), "expose-event",
         G_CALLBACK(expose_event), (gpointer) m);
-    #else
+#else
     g_signal_connect (G_OBJECT(m->da), "draw",
         G_CALLBACK(draw), (gpointer) m);
-    #endif
+#endif
     /* g_signal_connect(G_OBJECT(m->da), "button-press-event",
                     G_CALLBACK(plugin_button_press_event), p); */
 
@@ -482,41 +483,34 @@ configure_event(GtkWidget* widget, GdkEventConfigure* dummy, gpointer data)
 #if !GTK_CHECK_VERSION(3, 0, 0)
 static gboolean
 expose_event(GtkWidget * widget, GdkEventExpose * event, Monitor *m)
+#else
+static gboolean
+draw(GtkWidget * widget, cairo_t * cr, Monitor *m)
+#endif
 {
     /* Draw the requested part of the pixmap onto the drawing area.
      * Translate it in both x and y by the border size. */
     if (m->pixmap != NULL)
     {
+#if !GTK_CHECK_VERSION(3, 0, 0)
         cairo_t *cr = gdk_cairo_create(gtk_widget_get_window(widget));
         GtkStyle *style = gtk_widget_get_style(m->da);
         gdk_cairo_region(cr, event->region);
         cairo_clip(cr);
         gdk_cairo_set_source_color(cr, &style->black);
-        cairo_set_source_surface(cr, m->pixmap, BORDER_SIZE, BORDER_SIZE);
-        cairo_paint(cr);
-        check_cairo_status(cr);
-        cairo_destroy(cr);
-    }
-
-    return FALSE;
-}
 #else
-static gboolean
-draw(GtkWidget * widget, cairo_t * cr, Monitor *m)
-{
-    /* Draw the requested part of the pixmap onto the drawing area.
-     * Translate it in both x and y by the border size. */
-    if (m->pixmap != NULL)
-    {
-        cairo_set_source_rgb(cr, 0, 0, 0);
+        cairo_set_source_rgb(cr, 0, 0, 0); // FIXME: set the color from style
+#endif
         cairo_set_source_surface(cr, m->pixmap, BORDER_SIZE, BORDER_SIZE);
         cairo_paint(cr);
         check_cairo_status(cr);
+#if !GTK_CHECK_VERSION(3, 0, 0)
+        cairo_destroy(cr);
+#endif
     }
 
     return FALSE;
 }
-#endif
 
 
 static gboolean monitors_button_press_event(GtkWidget* widget, GdkEventButton* evt, LXPanel *panel)
index 28e6679..33116ef 100644 (file)
@@ -604,6 +604,7 @@ netstatus_icon_size_request (GtkWidget      *widget,
   if (GTK_WIDGET_CLASS (klass)->size_request)
     GTK_WIDGET_CLASS (klass)->size_request (widget, requisition);
 }
+// FIXME: for GTK+ 3.0 make get_preferred_{width,height} callbacks!
 #endif
 
 static void
@@ -834,6 +835,7 @@ netstatus_icon_class_init (NetstatusIconClass *klass)
 
 #if !GTK_CHECK_VERSION(3, 0, 0)
   widget_class->size_request       = netstatus_icon_size_request;
+  // FIXME: for GTK+ 3.0 make get_preferred_{width,height} callbacks!
 #endif
   widget_class->size_allocate      = netstatus_icon_size_allocate;
   widget_class->realize            = netstatus_icon_realize;
index 4f74214..b5daf37 100644 (file)
@@ -14,6 +14,7 @@
  *               2013 Rouslan <rouslan-k@users.sourceforge.net>
  *               2013 peadaredwards <peadaredwards@users.sourceforge.net>
  *               2014-2015 Andriy Grytsenko <andrej@rep.kiev.ua>
+ *               2015 Rafał Mużyło <galtgendo@gmail.com>
  *
  * This file is a part of LXPanel project.
  *
@@ -266,7 +267,10 @@ lxpanel_get_preferred_width (GtkWidget *widget,
 
   lxpanel_size_request (widget, &requisition);
 
-  *minimal_width = *natural_width = requisition.width;
+  if (minimal_width)
+      *minimal_width = requisition.width;
+  if (natural_width)
+      *natural_width = requisition.width;
 }
 
 static void
@@ -278,7 +282,10 @@ lxpanel_get_preferred_height (GtkWidget *widget,
 
   lxpanel_size_request (widget, &requisition);
 
-  *minimal_height = *natural_height = requisition.height;
+  if (minimal_height)
+      *minimal_height = requisition.height;
+  if (natural_height)
+      *natural_height = requisition.height;
 }
 #endif