ratpoison-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [RP] select patch


From: Johannes Altmanninger
Subject: Re: [RP] select patch
Date: Fri, 20 Jun 2014 14:43:48 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0

Now I have rewritten find_window_name() again, it is much cleaner this way, no need for unnecessary temporary variables anymore :) It works the same as before but I still get the "assignment from incompatible pointer type" warning...

rp_window *
find_window_name (char *name, int match_type)
{
typedef int (*compare_window_name_function)(char *name1, char *name2, int length);
  compare_window_name_function my_compare;
  switch(match_type)
    {
    case MATCH_EXACT:
      my_compare = strcmp;
      break;
    case MATCH_IGNORECASE:
      my_compare = strcasecmp;
      break;
    case MATCH_PREFIX:
      my_compare = strncmp;
      break;
    case MATCH_IGNORECASE | MATCH_PREFIX:
      my_compare = strncasecmp;
      break;
    default:
      my_compare = strncmp;
    }
  // number of the currently selected window
  int current_win_number = current_window() ? current_window()->number : 0;
  rp_window_elem *cur;

  int may_return = 1;
  if (defaults.select_style == SELECT_PREFER_NOTSELECTED)
      may_return = 0;

  rp_window *first_match = NULL;

  list_for_each_entry (cur, &rp_current_group->mapped_windows, node)
    {
      if (!my_compare (name, window_name(cur->win), strlen(name)))
        {
          if (may_return)
            {
              return cur->win;
            }
          else
            {
              if(cur->win->number == current_win_number)
                may_return = 1;
              if(!first_match)
                first_match = cur->win;
            }
        }
    }
  return first_match;
}



reply via email to

[Prev in Thread] Current Thread [Next in Thread]