]> git.saurik.com Git - wxWidgets.git/commitdiff
After resolving all conflicts that came down the
authorRobert Roebling <robert@roebling.de>
Mon, 7 Sep 1998 22:01:55 +0000 (22:01 +0000)
committerRobert Roebling <robert@roebling.de>
Mon, 7 Sep 1998 22:01:55 +0000 (22:01 +0000)
  telephone line: DialogEd is ready for general
  consumption now.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

14 files changed:
include/wx/gtk/font.h
include/wx/gtk1/font.h
src/gtk/checkbox.cpp
src/gtk/font.cpp
src/gtk/listbox.cpp
src/gtk/utilsgtk.cpp
src/gtk/window.cpp
src/gtk1/checkbox.cpp
src/gtk1/font.cpp
src/gtk1/listbox.cpp
src/gtk1/utilsgtk.cpp
src/gtk1/window.cpp
utils/dialoged/src/dlghndlr.cpp
utils/dialoged/src/reseditr.cpp

index 4e9a085d73e614f8bf28be7a69cd7181d16a81d1..70e82bedb8a0c48fc12eda1bbf4833c3cc151529 100644 (file)
@@ -59,7 +59,7 @@ class wxFont: public wxGDIObject
     wxFont& operator = ( const wxFont& font );
     bool operator == ( const wxFont& font );
     bool operator != ( const wxFont& font );
-    bool Ok();
+    bool Ok() const;
 
     int GetPointSize(void) const;
     wxString GetFaceName(void) const;
index 4e9a085d73e614f8bf28be7a69cd7181d16a81d1..70e82bedb8a0c48fc12eda1bbf4833c3cc151529 100644 (file)
@@ -59,7 +59,7 @@ class wxFont: public wxGDIObject
     wxFont& operator = ( const wxFont& font );
     bool operator == ( const wxFont& font );
     bool operator != ( const wxFont& font );
-    bool Ok();
+    bool Ok() const;
 
     int GetPointSize(void) const;
     wxString GetFaceName(void) const;
index 3883d1d7e27e6433eaf04323070b3d1e74158d4c..c4aac9364a1b3d47d18149dddb181da0f0d8246a 100644 (file)
@@ -56,8 +56,6 @@ bool wxCheckBox::Create(  wxWindow *parent, wxWindowID id, const wxString &label
 
   SetValidator( validator );
 
-  wxControl::SetLabel( label );
-
   m_widget = gtk_check_button_new_with_label( m_label );
  
   wxSize newSize = size;
@@ -70,6 +68,8 @@ bool wxCheckBox::Create(  wxWindow *parent, wxWindowID id, const wxString &label
     
   PostCreation();
   
+  SetLabel( label );
+
   Show( TRUE );
     
   return TRUE;
index 2152854752a24da066716e1d87d51cafb713cf87..dfb4fd8be24308b3717e7addc07e8f166a04758d 100644 (file)
 // local data
 //-----------------------------------------------------------------------------
 
-static char *wx_font_family [] = {
-    "wxDEFAULT", "wxDECORATIVE", "wxROMAN", "wxSCRIPT",
-    "wxSWISS", "wxMODERN", "wxTELETYPE",
-};
-
-/*
-static char *wx_font_style [] = {
-    "wxDEFAULT", "wxNORMAL", "wxSLANT", "wxITALIC",
-};
-
-static char *wx_font_weight [] = {
-    "wxDEFAULT", "wxNORMAL", "wxBOLD", "wxLIGHT",
-};
-*/
-
 extern wxFontNameDirectory *wxTheFontNameDirectory;
 
 //-----------------------------------------------------------------------------
@@ -64,10 +49,10 @@ class wxFontRefData: public wxObjectRefData
 wxFontRefData::wxFontRefData(void) : m_scaled_xfonts(wxKEY_INTEGER)
 {
   m_byXFontName = FALSE;
-  m_pointSize = -1;
-  m_family = -1;
-  m_style = -1;
-  m_weight = -1;
+  m_pointSize = 12;
+  m_family = wxSWISS;
+  m_style = wxNORMAL;
+  m_weight = wxNORMAL;
   m_underlined = FALSE;
   m_fontId = 0;
   m_faceName = (char *) NULL;
@@ -128,8 +113,11 @@ wxFont::wxFont(int PointSize, int FontIdOrFamily, int Style, int Weight,
     M_FONTDATA->m_fontId = FontIdOrFamily;
     M_FONTDATA->m_family  = wxTheFontNameDirectory->GetFamily( FontIdOrFamily );
   }
+  if (Style == wxDEFAULT) Style = wxSWISS;
   M_FONTDATA->m_style = Style;
+  if (Weight == wxDEFAULT) Weight = wxNORMAL;
   M_FONTDATA->m_weight = Weight;
+  if (PointSize == wxDEFAULT) PointSize = 10;
   M_FONTDATA->m_pointSize = PointSize;
   M_FONTDATA->m_underlined = Underlined;
 
@@ -189,106 +177,120 @@ bool wxFont::operator != ( const wxFont& font )
   return m_refData != font.m_refData; 
 }
 
-bool wxFont::Ok()
+bool wxFont::Ok() const
 {
-  return (m_refData != NULL);
+  if (!m_refData)
+  {
+    wxFAIL_MSG( "invalid font" );
+    return FALSE;
+  }
+  else
+    return TRUE;
 }
 
 int wxFont::GetPointSize(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
+  if (!Ok()) return "";
+  
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
 }
 
 wxString wxFont::GetFaceName(void) const
 {
+  if (!Ok()) return "";
+  
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
 }
 
 int wxFont::GetFamily(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
-  wxString s = wx_font_family[M_FONTDATA->m_family - wxDEFAULT];
-  return s;
+  if (!Ok()) return "wxDEFAULT";
+  
+  switch (M_FONTDATA->m_family)
+  {
+    case wxDECORATIVE:   return wxString("wxDECORATIVE");
+    case wxROMAN:        return wxString("wxROMAN");
+    case wxSCRIPT:       return wxString("wxSCRIPT");
+    case wxSWISS:        return wxString("wxSWISS");
+    case wxMODERN:       return wxString("wxMODERN");
+    case wxTELETYPE:     return wxString("wxTELETYPE");
+    default:             return "wxDEFAULT";
+  }
+
+  return "wxDEFAULT";
 }
 
 int wxFont::GetFontId(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
-    switch (M_FONTDATA->m_style)
-    {
-        case wxNORMAL:
-        {
-            return wxString("wxNORMAL");
-        }
-        case wxSLANT:
-        {
-            return wxString("wxSLANT");
-        }
-        case wxITALIC:
-        {
-            return wxString("wxITALIC");
-        }
-        case wxDEFAULT:
-        default:
-        {
-            return wxString("wxDEFAULT");
-        }
-    }
-    return wxString("wxDEFAULT");
+  if (!Ok()) return "wxDEFAULT";
+  
+  switch (M_FONTDATA->m_style)
+  {
+    case wxNORMAL:   return wxString("wxNORMAL");
+    case wxSLANT:    return wxString("wxSLANT");
+    case wxITALIC:   return wxString("wxITALIC");
+    default:         return wxString("wxDEFAULT");
+  }
+    
+  return wxString("wxDEFAULT");
 }
 
 int wxFont::GetWeight(void) const
 {
+  if (!Ok()) return 0;
+
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
-    switch (M_FONTDATA->m_weight)
-    {
-        case wxNORMAL:
-        {
-            return wxString("wxNORMAL");
-        }
-        case wxBOLD:
-        {
-            return wxString("wxBOLD");
-        }
-        case wxLIGHT:
-        {
-            return wxString("wxLIGHT");
-        }
-        case wxDEFAULT:
-        default:
-        {
-            return wxString("wxDEFAULT");
-        }
-    }
-    return wxString("wxDEFAULT");
+  if (!Ok()) return "wxDEFAULT";
+
+  switch (M_FONTDATA->m_weight)
+  {
+    case wxNORMAL:   return wxString("wxNORMAL");
+    case wxBOLD:     return wxString("wxBOLD");
+    case wxLIGHT:    return wxString("wxLIGHT");
+    default:         return wxString("wxDEFAULT");
+  }
+  
+  return wxString("wxDEFAULT");
 }
 
 bool wxFont::GetUnderlined(void) const
 {
+  if (!Ok()) return FALSE;
+  
   return M_FONTDATA->m_underlined;
 }
 
index 1e2e80ebc82b0cb25de040be918505bb0b88541a..fdd21a83ee8081060299261f9a25167403766594 100644 (file)
@@ -85,7 +85,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
   
   m_list = GTK_LIST( gtk_list_new() );
   
-  GtkSelectionMode mode = GTK_SELECTION_SINGLE;
+  GtkSelectionMode mode = GTK_SELECTION_BROWSE;
   if (style & wxLB_MULTIPLE)
     mode = GTK_SELECTION_MULTIPLE;
   else if (style & wxLB_EXTENDED)
@@ -96,6 +96,11 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
   gtk_container_add (GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
   gtk_widget_show( GTK_WIDGET(m_list) );
   
+  wxSize newSize = size;
+  if (newSize.x == -1) newSize.x = 100;
+  if (newSize.y == -1) newSize.y = 110;
+  SetSize( newSize.x, newSize.y );
+  
   for (int i = 0; i < n; i++)
   {
     GtkWidget *list_item;
@@ -222,21 +227,14 @@ char *wxListBox::GetClientData( int n ) const
 
 int wxListBox::GetSelection(void) const
 {
-  GList *selection = m_list->selection;
-  if (selection)
+  GList *child = m_list->children;
+  int count = 0;
+  while (child)
   {
-    GList *child = m_list->children;
-    int count = 0;
-    while (child)
-    {
-      if (child->data == selection->data) return count;
-      count++;
-      child = child->next;
-    }
+    if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) return count;
+    count++;
+    child = child->next;
   }
-  // No, I think it's reasonable to return -1 to indicate
-  // there is no selection. -- JACS
-//  wxFAIL_MSG("wrong listbox index");
   return -1;
 }
 
index 050d1718ced2f06ddfc7ab2f754557130aaed673..25210a4e0be987fb228923005a59120a9cf1e458 100644 (file)
@@ -80,15 +80,11 @@ int wxDisplayDepth(void)
 // user and home routines
 //------------------------------------------------------------------------
 
-char* wxGetHomeDir( char *dest )
+const char* wxGetHomeDir( wxString *home  )
 {
-  wxString tmp = wxGetUserHome( wxString() );
-  if (tmp.IsNull())
-    strcpy( wxBuffer, "/" );
-  else
-    strcpy( wxBuffer, tmp );
-  if (dest) strcpy( dest, WXSTRINGCAST tmp );
-  return wxBuffer;
+  *home = wxGetUserHome( wxString() );
+  if (home->IsNull()) *home = "/";
+  return *home;
 };
 
 char *wxGetUserHome( const wxString &user )
index 863f51e463f4cc55d0606a76dbff64ea4f6f2f15..7cba0eb41e9b2742a49c68241b8f229c092203ef 100644 (file)
 extern wxList wxPendingDelete;
 extern wxList wxTopLevelWindows;
 extern bool   g_blockEventsOnDrag;
+wxWindow     *g_captureWindow = (wxWindow*)NULL;
 
 //-----------------------------------------------------------------------------
 // "expose_event" (of m_wxwindow, not of m_widget)
@@ -299,6 +300,8 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
 {
   if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE;
   
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
 
   if (win->m_wxwindow)
@@ -403,6 +406,9 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
 static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindow *win )
 { 
   if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
 
   if (!win->HasVMT()) return TRUE;
@@ -469,6 +475,9 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
 static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_event, wxWindow *win )
 { 
   if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
 
   if (!win->HasVMT()) return TRUE;
@@ -599,7 +608,11 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
 static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win )
 {
   if (widget->window != gdk_event->window) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
+  
   if (!win->HasVMT()) return TRUE;
   
   if (widget->window)
@@ -621,9 +634,13 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
 static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win )
 {
   if (widget->window != gdk_event->window) return TRUE;
-  if (!win->HasVMT()) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
   
+  if (!win->HasVMT()) return TRUE;
+  
   if (widget->window)
     gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
     
@@ -1981,6 +1998,7 @@ void wxWindow::CaptureMouse(void)
         GDK_BUTTON_RELEASE_MASK |
         GDK_POINTER_MOTION_MASK), 
         (GdkWindow *) NULL, (GdkCursor *) NULL, GDK_CURRENT_TIME );
+  g_captureWindow = this;
 }
 
 void wxWindow::ReleaseMouse(void)
@@ -1988,6 +2006,7 @@ void wxWindow::ReleaseMouse(void)
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
+  g_captureWindow = (wxWindow*) NULL;;
 }
 
 void wxWindow::SetTitle( const wxString &WXUNUSED(title) )
index 3883d1d7e27e6433eaf04323070b3d1e74158d4c..c4aac9364a1b3d47d18149dddb181da0f0d8246a 100644 (file)
@@ -56,8 +56,6 @@ bool wxCheckBox::Create(  wxWindow *parent, wxWindowID id, const wxString &label
 
   SetValidator( validator );
 
-  wxControl::SetLabel( label );
-
   m_widget = gtk_check_button_new_with_label( m_label );
  
   wxSize newSize = size;
@@ -70,6 +68,8 @@ bool wxCheckBox::Create(  wxWindow *parent, wxWindowID id, const wxString &label
     
   PostCreation();
   
+  SetLabel( label );
+
   Show( TRUE );
     
   return TRUE;
index 2152854752a24da066716e1d87d51cafb713cf87..dfb4fd8be24308b3717e7addc07e8f166a04758d 100644 (file)
 // local data
 //-----------------------------------------------------------------------------
 
-static char *wx_font_family [] = {
-    "wxDEFAULT", "wxDECORATIVE", "wxROMAN", "wxSCRIPT",
-    "wxSWISS", "wxMODERN", "wxTELETYPE",
-};
-
-/*
-static char *wx_font_style [] = {
-    "wxDEFAULT", "wxNORMAL", "wxSLANT", "wxITALIC",
-};
-
-static char *wx_font_weight [] = {
-    "wxDEFAULT", "wxNORMAL", "wxBOLD", "wxLIGHT",
-};
-*/
-
 extern wxFontNameDirectory *wxTheFontNameDirectory;
 
 //-----------------------------------------------------------------------------
@@ -64,10 +49,10 @@ class wxFontRefData: public wxObjectRefData
 wxFontRefData::wxFontRefData(void) : m_scaled_xfonts(wxKEY_INTEGER)
 {
   m_byXFontName = FALSE;
-  m_pointSize = -1;
-  m_family = -1;
-  m_style = -1;
-  m_weight = -1;
+  m_pointSize = 12;
+  m_family = wxSWISS;
+  m_style = wxNORMAL;
+  m_weight = wxNORMAL;
   m_underlined = FALSE;
   m_fontId = 0;
   m_faceName = (char *) NULL;
@@ -128,8 +113,11 @@ wxFont::wxFont(int PointSize, int FontIdOrFamily, int Style, int Weight,
     M_FONTDATA->m_fontId = FontIdOrFamily;
     M_FONTDATA->m_family  = wxTheFontNameDirectory->GetFamily( FontIdOrFamily );
   }
+  if (Style == wxDEFAULT) Style = wxSWISS;
   M_FONTDATA->m_style = Style;
+  if (Weight == wxDEFAULT) Weight = wxNORMAL;
   M_FONTDATA->m_weight = Weight;
+  if (PointSize == wxDEFAULT) PointSize = 10;
   M_FONTDATA->m_pointSize = PointSize;
   M_FONTDATA->m_underlined = Underlined;
 
@@ -189,106 +177,120 @@ bool wxFont::operator != ( const wxFont& font )
   return m_refData != font.m_refData; 
 }
 
-bool wxFont::Ok()
+bool wxFont::Ok() const
 {
-  return (m_refData != NULL);
+  if (!m_refData)
+  {
+    wxFAIL_MSG( "invalid font" );
+    return FALSE;
+  }
+  else
+    return TRUE;
 }
 
 int wxFont::GetPointSize(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_pointSize;
 }
 
 wxString wxFont::GetFaceString(void) const
 {
+  if (!Ok()) return "";
+  
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s;
 }
 
 wxString wxFont::GetFaceName(void) const
 {
+  if (!Ok()) return "";
+  
   wxString s = wxTheFontNameDirectory->GetFontName( M_FONTDATA->m_fontId );
   return s; 
 }
 
 int wxFont::GetFamily(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_family;
 }
 
 wxString wxFont::GetFamilyString(void) const
 {
-  wxString s = wx_font_family[M_FONTDATA->m_family - wxDEFAULT];
-  return s;
+  if (!Ok()) return "wxDEFAULT";
+  
+  switch (M_FONTDATA->m_family)
+  {
+    case wxDECORATIVE:   return wxString("wxDECORATIVE");
+    case wxROMAN:        return wxString("wxROMAN");
+    case wxSCRIPT:       return wxString("wxSCRIPT");
+    case wxSWISS:        return wxString("wxSWISS");
+    case wxMODERN:       return wxString("wxMODERN");
+    case wxTELETYPE:     return wxString("wxTELETYPE");
+    default:             return "wxDEFAULT";
+  }
+
+  return "wxDEFAULT";
 }
 
 int wxFont::GetFontId(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_fontId; // stub
 }
 
 int wxFont::GetStyle(void) const
 {
+  if (!Ok()) return 0;
+  
   return M_FONTDATA->m_style;
 }
 
 wxString wxFont::GetStyleString(void) const
 {
-    switch (M_FONTDATA->m_style)
-    {
-        case wxNORMAL:
-        {
-            return wxString("wxNORMAL");
-        }
-        case wxSLANT:
-        {
-            return wxString("wxSLANT");
-        }
-        case wxITALIC:
-        {
-            return wxString("wxITALIC");
-        }
-        case wxDEFAULT:
-        default:
-        {
-            return wxString("wxDEFAULT");
-        }
-    }
-    return wxString("wxDEFAULT");
+  if (!Ok()) return "wxDEFAULT";
+  
+  switch (M_FONTDATA->m_style)
+  {
+    case wxNORMAL:   return wxString("wxNORMAL");
+    case wxSLANT:    return wxString("wxSLANT");
+    case wxITALIC:   return wxString("wxITALIC");
+    default:         return wxString("wxDEFAULT");
+  }
+    
+  return wxString("wxDEFAULT");
 }
 
 int wxFont::GetWeight(void) const
 {
+  if (!Ok()) return 0;
+
   return M_FONTDATA->m_weight;
 }
 
 wxString wxFont::GetWeightString(void) const
 {
-    switch (M_FONTDATA->m_weight)
-    {
-        case wxNORMAL:
-        {
-            return wxString("wxNORMAL");
-        }
-        case wxBOLD:
-        {
-            return wxString("wxBOLD");
-        }
-        case wxLIGHT:
-        {
-            return wxString("wxLIGHT");
-        }
-        case wxDEFAULT:
-        default:
-        {
-            return wxString("wxDEFAULT");
-        }
-    }
-    return wxString("wxDEFAULT");
+  if (!Ok()) return "wxDEFAULT";
+
+  switch (M_FONTDATA->m_weight)
+  {
+    case wxNORMAL:   return wxString("wxNORMAL");
+    case wxBOLD:     return wxString("wxBOLD");
+    case wxLIGHT:    return wxString("wxLIGHT");
+    default:         return wxString("wxDEFAULT");
+  }
+  
+  return wxString("wxDEFAULT");
 }
 
 bool wxFont::GetUnderlined(void) const
 {
+  if (!Ok()) return FALSE;
+  
   return M_FONTDATA->m_underlined;
 }
 
index 1e2e80ebc82b0cb25de040be918505bb0b88541a..fdd21a83ee8081060299261f9a25167403766594 100644 (file)
@@ -85,7 +85,7 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
   
   m_list = GTK_LIST( gtk_list_new() );
   
-  GtkSelectionMode mode = GTK_SELECTION_SINGLE;
+  GtkSelectionMode mode = GTK_SELECTION_BROWSE;
   if (style & wxLB_MULTIPLE)
     mode = GTK_SELECTION_MULTIPLE;
   else if (style & wxLB_EXTENDED)
@@ -96,6 +96,11 @@ bool wxListBox::Create( wxWindow *parent, wxWindowID id,
   gtk_container_add (GTK_CONTAINER(m_widget), GTK_WIDGET(m_list) );
   gtk_widget_show( GTK_WIDGET(m_list) );
   
+  wxSize newSize = size;
+  if (newSize.x == -1) newSize.x = 100;
+  if (newSize.y == -1) newSize.y = 110;
+  SetSize( newSize.x, newSize.y );
+  
   for (int i = 0; i < n; i++)
   {
     GtkWidget *list_item;
@@ -222,21 +227,14 @@ char *wxListBox::GetClientData( int n ) const
 
 int wxListBox::GetSelection(void) const
 {
-  GList *selection = m_list->selection;
-  if (selection)
+  GList *child = m_list->children;
+  int count = 0;
+  while (child)
   {
-    GList *child = m_list->children;
-    int count = 0;
-    while (child)
-    {
-      if (child->data == selection->data) return count;
-      count++;
-      child = child->next;
-    }
+    if (GTK_WIDGET(child->data)->state == GTK_STATE_SELECTED) return count;
+    count++;
+    child = child->next;
   }
-  // No, I think it's reasonable to return -1 to indicate
-  // there is no selection. -- JACS
-//  wxFAIL_MSG("wrong listbox index");
   return -1;
 }
 
index 050d1718ced2f06ddfc7ab2f754557130aaed673..25210a4e0be987fb228923005a59120a9cf1e458 100644 (file)
@@ -80,15 +80,11 @@ int wxDisplayDepth(void)
 // user and home routines
 //------------------------------------------------------------------------
 
-char* wxGetHomeDir( char *dest )
+const char* wxGetHomeDir( wxString *home  )
 {
-  wxString tmp = wxGetUserHome( wxString() );
-  if (tmp.IsNull())
-    strcpy( wxBuffer, "/" );
-  else
-    strcpy( wxBuffer, tmp );
-  if (dest) strcpy( dest, WXSTRINGCAST tmp );
-  return wxBuffer;
+  *home = wxGetUserHome( wxString() );
+  if (home->IsNull()) *home = "/";
+  return *home;
 };
 
 char *wxGetUserHome( const wxString &user )
index 863f51e463f4cc55d0606a76dbff64ea4f6f2f15..7cba0eb41e9b2742a49c68241b8f229c092203ef 100644 (file)
 extern wxList wxPendingDelete;
 extern wxList wxTopLevelWindows;
 extern bool   g_blockEventsOnDrag;
+wxWindow     *g_captureWindow = (wxWindow*)NULL;
 
 //-----------------------------------------------------------------------------
 // "expose_event" (of m_wxwindow, not of m_widget)
@@ -299,6 +300,8 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
 {
   if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE;
   
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
 
   if (win->m_wxwindow)
@@ -403,6 +406,9 @@ static gint gtk_window_button_press_callback( GtkWidget *widget, GdkEventButton
 static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButton *gdk_event, wxWindow *win )
 { 
   if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
 
   if (!win->HasVMT()) return TRUE;
@@ -469,6 +475,9 @@ static gint gtk_window_button_release_callback( GtkWidget *widget, GdkEventButto
 static gint gtk_window_motion_notify_callback( GtkWidget *widget, GdkEventMotion *gdk_event, wxWindow *win )
 { 
   if (!win->IsOwnGtkWindow( gdk_event->window )) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
 
   if (!win->HasVMT()) return TRUE;
@@ -599,7 +608,11 @@ static gint gtk_window_focus_out_callback( GtkWidget *widget, GdkEvent *WXUNUSED
 static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win )
 {
   if (widget->window != gdk_event->window) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
+  
   if (!win->HasVMT()) return TRUE;
   
   if (widget->window)
@@ -621,9 +634,13 @@ static gint gtk_window_enter_callback( GtkWidget *widget, GdkEventCrossing *gdk_
 static gint gtk_window_leave_callback( GtkWidget *widget, GdkEventCrossing *gdk_event, wxWindow *win )
 {
   if (widget->window != gdk_event->window) return TRUE;
-  if (!win->HasVMT()) return TRUE;
+  
+  if ((g_captureWindow) && (win != g_captureWindow)) return TRUE;
+  
   if (g_blockEventsOnDrag) return TRUE;
   
+  if (!win->HasVMT()) return TRUE;
+  
   if (widget->window)
     gdk_window_set_cursor( widget->window, wxSTANDARD_CURSOR->GetCursor() );
     
@@ -1981,6 +1998,7 @@ void wxWindow::CaptureMouse(void)
         GDK_BUTTON_RELEASE_MASK |
         GDK_POINTER_MOTION_MASK), 
         (GdkWindow *) NULL, (GdkCursor *) NULL, GDK_CURRENT_TIME );
+  g_captureWindow = this;
 }
 
 void wxWindow::ReleaseMouse(void)
@@ -1988,6 +2006,7 @@ void wxWindow::ReleaseMouse(void)
   GtkWidget *connect_widget = GetConnectWidget();
   gtk_grab_remove( connect_widget );
   gdk_pointer_ungrab ( GDK_CURRENT_TIME );
+  g_captureWindow = (wxWindow*) NULL;;
 }
 
 void wxWindow::SetTitle( const wxString &WXUNUSED(title) )
index cfa37ec97e1c64a8e02d4e3526bf66a8482279cf..f312fb0ec0c0419c10f87ca30dc6e8052d71ecdb 100644 (file)
@@ -371,13 +371,16 @@ void wxResourceEditorDialogHandler::OnItemEvent(wxControl *item, wxMouseEvent& e
 
   event.m_x = event.m_x + x;
   event.m_y = event.m_y + y;
+  
   ProcessItemEvent(item, event, dragType);
 }
 
 void wxResourceEditorDialogHandler::ProcessItemEvent(wxControl *item, wxMouseEvent& event, int selectionHandle)
 {
   wxResourceEditorControlHandler *childHandler = (wxResourceEditorControlHandler *)item->GetEventHandler();
-
+  
+  if (dragItem) childHandler = (wxResourceEditorControlHandler *)dragItem->GetEventHandler();
+  
   long x, y;
   event.Position(&x, &y);
   int keys = 0;
index 9c98a3553fec69bc93ac309acb8d261c0f84e1b7..6dd1d8987df442875a47e42273319223b98eb6ca 100644 (file)
@@ -150,13 +150,8 @@ bool wxResourceManager::Initialize()
   strcat(buf, "\\dialoged.ini");
   m_optionsResourceFilename = buf;
 #elif defined(__WXGTK__)
-  /*
-  wxString buf;
-  wxGetHomeDir(&buf);
-  buf += "/.dialogedrc";
-  m_optionsResourceFilename = buf;
-  */
-  m_optionsResourceFilename = ".dialoged.rc";
+  wxGetHomeDir( &m_optionsResourceFilename );
+  m_optionsResourceFilename += "/.dialogedrc";
 #else
 #error "Unsupported platform."
 #endif