comparison src/audacious/ui_playlist.c @ 2351:911743d27aba trunk

[svn] - simplify and optimize the metadata tooltip trigger function
author giacomo
date Tue, 16 Jan 2007 16:49:21 -0800
parents 564e8a1fe09a
children 4b2c7d9523e7
comparison
equal deleted inserted replaced
2350:54cb84d3a581 2351:911743d27aba
68 static GdkGC *playlistwin_gc; 68 static GdkGC *playlistwin_gc;
69 69
70 static gboolean playlistwin_hint_flag = FALSE; 70 static gboolean playlistwin_hint_flag = FALSE;
71 71
72 static GtkWidget *playlistwin_infopopup = NULL; 72 static GtkWidget *playlistwin_infopopup = NULL;
73 static gint playlistwin_infopopup_sid = 0; 73 static guint playlistwin_infopopup_sid = 0;
74 74
75 static PlaylistSlider *playlistwin_slider = NULL; 75 static PlaylistSlider *playlistwin_slider = NULL;
76 static TextBox *playlistwin_time_min, *playlistwin_time_sec; 76 static TextBox *playlistwin_time_min, *playlistwin_time_sec;
77 static TextBox *playlistwin_info, *playlistwin_sinfo; 77 static TextBox *playlistwin_info, *playlistwin_sinfo;
78 static SButton *playlistwin_srew, *playlistwin_splay; 78 static SButton *playlistwin_srew, *playlistwin_splay;
1803 cfg.playlist_visible = TRUE; 1803 cfg.playlist_visible = TRUE;
1804 1804
1805 playlistwin_set_toprow(0); 1805 playlistwin_set_toprow(0);
1806 playlist_check_pos_current(playlist_get_active()); 1806 playlist_check_pos_current(playlist_get_active());
1807 1807
1808 playlistwin_infopopup_sid = g_timeout_add( 1808 if ( playlistwin_infopopup_sid == 0 )
1809 50 , (GSourceFunc)playlistwin_fileinfopopup_probe , playlistwin_infopopup ); 1809 playlistwin_infopopup_sid = g_timeout_add(
1810 50 , (GSourceFunc)playlistwin_fileinfopopup_probe , playlistwin_infopopup );
1810 1811
1811 gtk_widget_show(playlistwin); 1812 gtk_widget_show(playlistwin);
1812 } 1813 }
1813 1814
1814 void 1815 void
1822 tbutton_set_toggled(mainwin_pl, FALSE); 1823 tbutton_set_toggled(mainwin_pl, FALSE);
1823 cfg.playlist_visible = FALSE; 1824 cfg.playlist_visible = FALSE;
1824 1825
1825 /* no point in probing for playlistwin_infopopup trigger when the playlistwin is hidden */ 1826 /* no point in probing for playlistwin_infopopup trigger when the playlistwin is hidden */
1826 if ( playlistwin_infopopup_sid != 0 ) 1827 if ( playlistwin_infopopup_sid != 0 )
1828 {
1827 g_source_remove( playlistwin_infopopup_sid ); 1829 g_source_remove( playlistwin_infopopup_sid );
1830 playlistwin_infopopup_sid = 0;
1831 }
1828 1832
1829 if ( cfg.player_visible ) 1833 if ( cfg.player_visible )
1830 { 1834 {
1831 gtk_window_present(GTK_WINDOW(mainwin)); 1835 gtk_window_present(GTK_WINDOW(mainwin));
1832 gtk_widget_grab_focus(mainwin); 1836 gtk_widget_grab_focus(mainwin);
2181 || pos != prev_pos 2185 || pos != prev_pos
2182 || win != GDK_WINDOW(playlistwin->window)) 2186 || win != GDK_WINDOW(playlistwin->window))
2183 { 2187 {
2184 prev_pos = pos; 2188 prev_pos = pos;
2185 ctr = 0; 2189 ctr = 0;
2186 if ( GTK_WIDGET(filepopup_win)->window != NULL && 2190 audacious_fileinfopopup_hide(GTK_WIDGET(filepopup_win), NULL);
2187 gdk_window_is_viewable(GDK_WINDOW(GTK_WIDGET(filepopup_win)->window)) )
2188 audacious_fileinfopopup_hide(GTK_WIDGET(filepopup_win), NULL);
2189 return TRUE; 2191 return TRUE;
2190 } 2192 }
2191 2193
2192 if (prev_x == x && prev_y == y) 2194 if (prev_x == x && prev_y == y)
2193 ctr++; 2195 ctr++;
2198 prev_y = y; 2200 prev_y = y;
2199 audacious_fileinfopopup_hide(GTK_WIDGET(filepopup_win), NULL); 2201 audacious_fileinfopopup_hide(GTK_WIDGET(filepopup_win), NULL);
2200 return TRUE; 2202 return TRUE;
2201 } 2203 }
2202 2204
2203 if (GTK_WIDGET(filepopup_win)->window == NULL)
2204 skip = TRUE;
2205
2206 if (playlistwin_is_shaded()) { 2205 if (playlistwin_is_shaded()) {
2207 shaded_pos = playlist_get_position(playlist); 2206 shaded_pos = playlist_get_position(playlist);
2208 if (shaded_prev_pos != shaded_pos) 2207 if (shaded_prev_pos != shaded_pos)
2209 skip = TRUE; 2208 skip = TRUE;
2210 } 2209 }
2211 2210
2212 if (ctr >= cfg.filepopup_delay && (skip == TRUE || gdk_window_is_viewable(GDK_WINDOW(GTK_WIDGET(filepopup_win)->window)) != TRUE)) { 2211 if (ctr >= cfg.filepopup_delay && (skip == TRUE || GTK_WIDGET_VISIBLE(GTK_WIDGET(filepopup_win)) != TRUE)) {
2213 if (pos == -1 && !playlistwin_is_shaded()) { 2212 if (pos == -1 && !playlistwin_is_shaded()) {
2214 audacious_fileinfopopup_hide(GTK_WIDGET(filepopup_win), NULL); 2213 audacious_fileinfopopup_hide(GTK_WIDGET(filepopup_win), NULL);
2215 return TRUE; 2214 return TRUE;
2216 } 2215 }
2217 else { /* shaded mode */ 2216 else { /* shaded mode */