Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Unified Diff: chrome/browser/gtk/bookmark_bar_gtk.cc

Issue 112070: linux: Bookmark bar slide animation. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/gtk/bookmark_bar_gtk.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/gtk/bookmark_bar_gtk.cc
===================================================================
--- chrome/browser/gtk/bookmark_bar_gtk.cc (revision 17106)
+++ chrome/browser/gtk/bookmark_bar_gtk.cc (working copy)
@@ -30,6 +30,9 @@
namespace {
+// The height of the bar.
+const int kBookmarkBarHeight = 33;
+
// Maximum number of characters on a bookmark button.
const size_t kMaxCharsOnAButton = 15;
@@ -43,6 +46,12 @@
// Mime types for DnD. Used to synchronize across applications.
const char kInternalURIType[] = "application/x-chrome-bookmark-item";
+// Left-padding for the instructional text.
+const int kInstructionsPadding = 6;
+
+// Color of the instructional text.
+const GdkColor kInstructionsColor = GDK_COLOR_RGB(128, 128, 142);
+
// Table of the mime types that we accept with their options.
const GtkTargetEntry kTargetTable[] = {
{ const_cast<char*>(kInternalURIType), GTK_TARGET_SAME_APP,
@@ -110,10 +119,17 @@
bookmark_hbox_.Own(gtk_hbox_new(FALSE, 0));
- instructions_ = gtk_label_new(
+ instructions_ = gtk_alignment_new(0.0, 0.0, 1.0, 1.0);
+ gtk_alignment_set_padding(GTK_ALIGNMENT(instructions_), 0, 0,
+ kInstructionsPadding, 0);
+ GtkWidget* instructions_label = gtk_label_new(
l10n_util::GetStringUTF8(IDS_BOOKMARKS_NO_ITEMS).c_str());
+ gtk_widget_modify_fg(instructions_label, GTK_STATE_NORMAL,
+ &kInstructionsColor);
+ gtk_container_add(GTK_CONTAINER(instructions_), instructions_label);
gtk_box_pack_start(GTK_BOX(bookmark_hbox_.get()), instructions_,
FALSE, FALSE, 0);
+
gtk_widget_set_app_paintable(bookmark_hbox_.get(), TRUE);
g_signal_connect(G_OBJECT(bookmark_hbox_.get()), "expose-event",
G_CALLBACK(&OnHBoxExpose), this);
@@ -152,6 +168,9 @@
gtk_box_pack_start(GTK_BOX(bookmark_hbox_.get()), other_bookmarks_button_,
FALSE, FALSE, 0);
+ gtk_widget_set_size_request(bookmark_hbox_.get(), -1, 0);
+
+ slide_animation_.reset(new SlideAnimation(this));
}
void BookmarkBarGtk::AddBookmarkbarToBox(GtkWidget* box) {
@@ -160,6 +179,7 @@
void BookmarkBarGtk::Show() {
gtk_widget_show_all(bookmark_hbox_.get());
+ slide_animation_->Show();
// Maybe show the instructions
if (show_instructions_) {
@@ -170,7 +190,12 @@
}
void BookmarkBarGtk::Hide() {
- gtk_widget_hide_all(bookmark_hbox_.get());
+ // Sometimes we get called without a matching call to open. If that happens
+ // then force hide.
+ if (slide_animation_->IsShowing())
+ slide_animation_->Hide();
+ else
+ gtk_widget_hide(bookmark_hbox_.get());
}
bool BookmarkBarGtk::OnNewTabPage() {
@@ -283,7 +308,7 @@
void BookmarkBarGtk::SetInstructionState(BookmarkNode* boomarks_bar_node) {
show_instructions_ = (boomarks_bar_node->GetChildCount() == 0);
if (show_instructions_) {
- gtk_widget_show(instructions_);
+ gtk_widget_show_all(instructions_);
} else {
gtk_widget_hide(instructions_);
}
@@ -305,6 +330,21 @@
return profile_->GetPrefs()->GetBoolean(prefs::kShowBookmarkBar);
}
+void BookmarkBarGtk::AnimationProgressed(const Animation* animation) {
+ DCHECK_EQ(animation, slide_animation_.get());
+
+ gtk_widget_set_size_request(bookmark_hbox_.get(), -1,
+ animation->GetCurrentValue() *
+ kBookmarkBarHeight);
+}
+
+void BookmarkBarGtk::AnimationEnded(const Animation* animation) {
+ DCHECK_EQ(animation, slide_animation_.get());
+
+ if (!slide_animation_->IsShowing())
+ gtk_widget_hide(bookmark_hbox_.get());
+}
+
void BookmarkBarGtk::ConfigureButtonForNode(BookmarkNode* node,
GtkWidget* button) {
std::string tooltip = BuildTooltip(node);
@@ -373,8 +413,6 @@
ConnectFolderButtonEvents(button);
}
- GTK_WIDGET_UNSET_FLAGS(button, GTK_CAN_FOCUS);
-
return button;
}
« no previous file with comments | « chrome/browser/gtk/bookmark_bar_gtk.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698