static void update_size_and_orientation (NaTray *tray) { NaTrayPrivate *priv = tray->priv; na_obox_set_orientation (NA_OBOX (priv->box), priv->orientation); /* This only happens when setting the property during object construction */ if (!priv->trays_screen) return; g_hash_table_foreach (priv->trays_screen->tip_table, update_orientation_for_messages, tray); if (get_tray (priv->trays_screen) == tray) na_tray_manager_set_orientation (priv->trays_screen->tray_manager, priv->orientation); /* note, you want this larger if the frame has non-NONE relief by default. */ switch (priv->orientation) { case GTK_ORIENTATION_VERTICAL: /* Give box a min size so the frame doesn't look dumb */ gtk_widget_set_size_request (priv->box, MIN_BOX_SIZE, -1); break; case GTK_ORIENTATION_HORIZONTAL: gtk_widget_set_size_request (priv->box, -1, MIN_BOX_SIZE); break; } na_tray_force_redraw (tray); }
static void na_tray_manager_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) { NaTrayManager *manager = NA_TRAY_MANAGER (object); switch (prop_id) { case PROP_ORIENTATION: na_tray_manager_set_orientation (manager, g_value_get_enum (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }
static void na_tray_dispose (GObject *object) { NaTray *tray = NA_TRAY (object); NaTrayPrivate *priv = tray->priv; TraysScreen *trays_screen = priv->trays_screen; if (trays_screen != NULL) { trays_screen->all_trays = g_slist_remove (trays_screen->all_trays, tray); if (trays_screen->all_trays == NULL) { /* Make sure we drop the manager selection */ g_object_unref (trays_screen->tray_manager); trays_screen->tray_manager = NULL; g_hash_table_destroy (trays_screen->icon_table); trays_screen->icon_table = NULL; g_hash_table_destroy (trays_screen->tip_table); trays_screen->tip_table = NULL; } else { NaTray *new_tray; new_tray = get_tray (trays_screen); if (new_tray != NULL) na_tray_manager_set_orientation (trays_screen->tray_manager, na_tray_get_orientation (new_tray)); } } priv->trays_screen = NULL; if (priv->idle_redraw_id != 0) { g_source_remove (priv->idle_redraw_id); priv->idle_redraw_id = 0; } G_OBJECT_CLASS (na_tray_parent_class)->dispose (object); }