Ejemplo n.º 1
0
SsdWidget ssd_widget_remove(SsdWidget parent, SsdWidget child)
{
   SsdWidget cur_child     = parent->children;
   SsdWidget child_behind  = NULL;

  waze_assert(parent);
  waze_assert(child);

   while( cur_child)
   {
      if( cur_child == child)
      {
         if( child_behind)
            child_behind->next= child->next;
         else
            parent->children  = child->next;

         child->next   = NULL;
         child->parent = NULL;

         ssd_dialog_invalidate_tab_order();

         return child;
      }

      child_behind= cur_child;
      cur_child   = cur_child->next;
   }

   return NULL;
}
Ejemplo n.º 2
0
// Tab-Order:  Force a re-sort, even if was already sorted
void ssd_dialog_resort_tab_order()
{
   SsdDialog dialog = RoadMapDialogCurrent;
   SsdWidget in_focus;
   SsdWidget in_focus_def;
   BOOL      focus_set = FALSE;

   if( !dialog)
      return;

   in_focus    = dialog->in_focus;
   in_focus_def= dialog->in_focus_default;

   ssd_dialog_invalidate_tab_order();
   draw_dialog(RoadMapDialogCurrent);

   if( in_focus_def && ssd_dialog_set_focus( in_focus_def))
   {
      dialog->in_focus_default= in_focus_def;
      dialog->in_focus        = in_focus_def;
      focus_set               = TRUE;
   }

   if( in_focus && ssd_dialog_set_focus( in_focus))
      focus_set = TRUE;

   if( focus_set)
      draw_dialog(RoadMapDialogCurrent);

   roadmap_canvas_refresh ();
}
Ejemplo n.º 3
0
SsdWidget ssd_widget_replace(SsdWidget parent, SsdWidget old_child, SsdWidget new_child)
{
   SsdWidget cur_child     = parent->children;
   SsdWidget child_behind  = NULL;

  waze_assert(parent);
  waze_assert(old_child);
  waze_assert(new_child);

   while( cur_child)
   {
      if( cur_child == old_child)
      {
         if( child_behind)
            child_behind->next= new_child;
         else
            parent->children  = new_child;

         new_child->next   = old_child->next;
         new_child->parent = old_child->parent;
         old_child->next   = NULL;
         old_child->parent = NULL;

         ssd_dialog_invalidate_tab_order();

         return old_child;
      }

      child_behind= cur_child;
      cur_child   = cur_child->next;
   }

   return NULL;
}
Ejemplo n.º 4
0
SsdWidget ssd_dialog_activate (const char *name, void *context) {

   SsdDialog   prev     = NULL;
   SsdDialog   current  = RoadMapDialogCurrent;
   SsdDialog   dialog   = ssd_dialog_get (name);

   if (!dialog) {
      return NULL; /* Tell the caller this is a new, undefined, dialog. */
   }

   while (current && strcmp(current->name, name)) {
      prev = current;
      current = current->activated_prev;
   }

   if (current) {
      if (prev) {
         prev->activated_prev = current->activated_prev;
         current->activated_prev = RoadMapDialogCurrent;
         RoadMapDialogCurrent = current;
      }
      return current->container;
   }

   dialog->context = context;

   dialog->activated_prev = RoadMapDialogCurrent;

   if (!RoadMapDialogCurrent) {
      roadmap_keyboard_register_to_event__key_pressed( OnKeyPressed);
      /* Grab pointer hooks */
      roadmap_pointer_register_pressed
         (ssd_dialog_pressed, POINTER_HIGHEST);
      roadmap_pointer_register_released
         (ssd_dialog_released, POINTER_HIGHEST);
      roadmap_pointer_register_short_click
         (ssd_dialog_short_click, POINTER_HIGHEST);
      roadmap_pointer_register_long_click
         (ssd_dialog_long_click, POINTER_HIGHEST);

      roadmap_pointer_register_drag_start
                (&ssd_dialog_drag_start,POINTER_HIGHEST );

       roadmap_pointer_register_drag_end
                (&ssd_dialog_drag_end,POINTER_HIGHEST);

       roadmap_pointer_register_drag_motion
                (&ssd_dialog_drag_motion,POINTER_HIGHEST);
   }

   RoadMapDialogCurrent = dialog;
   set_softkeys(dialog);


   if( SSD_TAB_CONTROL & RoadMapDialogCurrent->container->flags)
      ssd_dialog_invalidate_tab_order();

   // Sort tab-order:
   ssd_dialog_sort_tab_order( dialog);
   dialog->stop_offset = 0;
   if (dialog->scroll_container != NULL)
      ssd_widget_set_offset(dialog->scroll_container,0,0);
   // Reset focus
#ifdef TOUCH_SCREEN
   ssd_dialog_set_dialog_focus(dialog, NULL);
#else
   ssd_dialog_set_dialog_focus(dialog, dialog->in_focus_default);
#endif

   if (!RoadMapScreenFrozen &&
   !(dialog->container->flags & (SSD_DIALOG_FLOAT|  SSD_DIALOG_TRANSPARENT))) {
      roadmap_start_screen_refresh (0);
      RoadMapScreenFrozen = 1;
   }

   ssd_dialog_disable_key ();

   ssd_dialog_handle_native_kb( dialog );

   return dialog->container; /* Tell the caller the dialog already exists. */
}