Exemplo n.º 1
0
BOOL ssd_dialog_set_dialog_focus( SsdDialog dialog, SsdWidget new_focus)
{
   SsdWidget last_focus;
   SsdWidget w;
   if( new_focus && !new_focus->tab_stop)
   {
      //assert( 0 && "ssd_dialog_set_dialog_focus() - Invalid input");
      return FALSE;
   }


   w = ssd_widget_get(new_focus,"focus_image");
   if( w != NULL)
       ssd_widget_show( w->children);

   // Setting the same one twice...
   if( dialog->in_focus == new_focus){
      if (new_focus && !new_focus->in_focus)
         ssd_widget_set_focus(new_focus);
      return TRUE;
   }

   if( new_focus && (dialog != new_focus->parent_dialog))
   {
      /*/[BOOKMARK]:[NOTE]:[PAZ] - If 'new_focus->parent_dialog' is NULL:
         Maybe 'ssd_dialog_sort_tab_order()' was called before 'ssd_dialog_draw'?
         Note that 'ssd_dialog_draw' will call 'ssd_dialog_sort_tab_order()',
         thus no need to call it directly.                                          */

      assert( 0 && "ssd_dialog_set_dialog_focus() - widget does not belong to this dialog");
      return FALSE;
   }

   last_focus = dialog->in_focus;
   if (dialog->in_focus)
   {
      ssd_widget_loose_focus(dialog->in_focus);
      dialog->in_focus = NULL;
   }

   if( !new_focus)
      return TRUE;

   if( !ssd_widget_set_focus(new_focus))
   {
      assert(0);
      if( ssd_widget_set_focus( last_focus))
         dialog->in_focus = last_focus;
      return FALSE;
   }

   dialog->in_focus = new_focus;

   ssd_dialog_allign_focus();
   return TRUE;
}
Exemplo n.º 2
0
static int button_callback (SsdWidget widget, const char *new_value) {

   RoadMapCallback callback = (RoadMapCallback) widget->context;

   (*callback)();

#ifdef TOUCH_SCREEN
   if (widget->parent)
   	ssd_widget_loose_focus(widget->parent);
#endif

   /* Hide dialog */
   while (widget->parent) widget = widget->parent;

   return 0;
}