aboutsummaryrefslogtreecommitdiff
path: root/mate-applet/topmenu-mate-panel-applet.c
diff options
context:
space:
mode:
Diffstat (limited to 'mate-applet/topmenu-mate-panel-applet.c')
-rw-r--r--mate-applet/topmenu-mate-panel-applet.c41
1 files changed, 40 insertions, 1 deletions
diff --git a/mate-applet/topmenu-mate-panel-applet.c b/mate-applet/topmenu-mate-panel-applet.c
index eb133bb..32841b7 100644
--- a/mate-applet/topmenu-mate-panel-applet.c
+++ b/mate-applet/topmenu-mate-panel-applet.c
@@ -21,12 +21,13 @@
#include <glib/gi18n.h>
#include <gdk/gdkx.h>
+#include <cairo-xlib.h>
G_DEFINE_TYPE(TopMenuMatePanelApplet, topmenu_mate_panel_applet, PANEL_TYPE_APPLET)
static void display_preferences_dialog(GtkAction *action, TopMenuMatePanelApplet *self)
{
- // TODO
+ // No preferences yet
}
static void display_about_dialog(GtkAction *action, TopMenuMatePanelApplet *self)
@@ -51,6 +52,41 @@ static const GtkActionEntry menu_verbs[] = {
G_CALLBACK (display_about_dialog) }
};
+#if GTK_MAJOR_VERSION == 3
+static void topmenu_mate_panel_applet_change_background(MatePanelApplet* applet, MatePanelAppletBackgroundType type, GdkRGBA* color, cairo_pattern_t* pattern)
+{
+ TopMenuMatePanelApplet *self = TOPMENU_MATE_PANEL_APPLET(applet);
+
+ if (type == PANEL_PIXMAP_BACKGROUND) {
+ topmenu_background_set_from_cairo_pattern(self->menu_widget->background, pattern);
+ } else if (type == PANEL_COLOR_BACKGROUND) {
+ topmenu_background_set_from_color(self->menu_widget->background,
+ color->red, color->green, color->blue,
+ color->alpha);
+ } else {
+ topmenu_background_clear(self->menu_widget->background);
+ }
+}
+#elif GTK_MAJOR_VERSION == 2
+static void topmenu_mate_panel_applet_change_background(MatePanelApplet* applet, MatePanelAppletBackgroundType type, GdkColor* color, GdkPixmap* pixmap)
+{
+ TopMenuMatePanelApplet *self = TOPMENU_MATE_PANEL_APPLET(applet);
+
+ if (type == PANEL_PIXMAP_BACKGROUND) {
+ topmenu_background_set_from_drawable(self->menu_widget->background,
+ GDK_PIXMAP_XID(pixmap));
+ } else if (type == PANEL_COLOR_BACKGROUND) {
+ topmenu_background_set_from_color(self->menu_widget->background,
+ color->red / 65535.0,
+ color->green / 65535.0,
+ color->blue / 65535.0,
+ 1.0);
+ } else {
+ topmenu_background_clear(self->menu_widget->background);
+ }
+}
+#endif
+
static void topmenu_mate_panel_applet_size_allocate(GtkWidget *widget, GtkAllocation *allocation)
{
TopMenuMatePanelApplet *self = TOPMENU_MATE_PANEL_APPLET(widget);
@@ -70,6 +106,9 @@ static void topmenu_mate_panel_applet_size_request(GtkWidget *widget, GtkRequisi
static void topmenu_mate_panel_applet_class_init(TopMenuMatePanelAppletClass *klass)
{
+ MatePanelAppletClass *applet_class = MATE_PANEL_APPLET_CLASS(klass);
+ applet_class->change_background = topmenu_mate_panel_applet_change_background;
+
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS(klass);
widget_class->size_allocate = topmenu_mate_panel_applet_size_allocate;
widget_class->size_request = topmenu_mate_panel_applet_size_request;