/* Virtual function "can_focus" was called */ static gboolean _xfdashboard_text_box_focusable_can_focus(XfdashboardFocusable *inFocusable) { XfdashboardTextBox *self; XfdashboardTextBoxPrivate *priv; XfdashboardFocusableInterface *selfIface; XfdashboardFocusableInterface *parentIface; g_return_val_if_fail(XFDASHBOARD_IS_TEXT_BOX(inFocusable), CLUTTER_EVENT_PROPAGATE); self=XFDASHBOARD_TEXT_BOX(inFocusable); priv=self->priv; /* Check if actor could be focused at all ... */ selfIface=XFDASHBOARD_FOCUSABLE_GET_IFACE(inFocusable); parentIface=g_type_interface_peek_parent(selfIface); if(parentIface && parentIface->can_focus) { if(!parentIface->can_focus(inFocusable)) return(FALSE); } /* ... then only an editable text box can be focused */ if(priv->isEditable) return(TRUE); /* If we get here this actor cannot be focused */ return(FALSE); }
/* Call virtual function "can_focus" */ gboolean xfdashboard_focusable_can_focus(XfdashboardFocusable *self) { XfdashboardFocusableInterface *iface; g_return_val_if_fail(XFDASHBOARD_IS_FOCUSABLE(self), FALSE); iface=XFDASHBOARD_FOCUSABLE_GET_IFACE(self); /* Call virtual function */ if(iface->can_focus) { return(iface->can_focus(self)); } /* If we get here the virtual function was not overridden */ XFDASHBOARD_FOCUSABLE_WARN_NOT_IMPLEMENTED(self, "can_focus"); return(FALSE); }
/* Determine if actor can get the focus */ static gboolean _xfdashboard_action_button_focusable_can_focus(XfdashboardFocusable *inFocusable) { XfdashboardFocusableInterface *selfIface; XfdashboardFocusableInterface *parentIface; g_return_val_if_fail(XFDASHBOARD_IS_FOCUSABLE(inFocusable), FALSE); g_return_val_if_fail(XFDASHBOARD_IS_ACTION_BUTTON(inFocusable), FALSE); /* Call parent class interface function */ selfIface=XFDASHBOARD_FOCUSABLE_GET_IFACE(inFocusable); parentIface=g_type_interface_peek_parent(selfIface); if(parentIface && parentIface->can_focus) { if(!parentIface->can_focus(inFocusable)) return(FALSE); } /* If we get here this actor can be focused */ return(TRUE); }