Calculate the position of the menu near the cog properly

Instead of magic numbers, use a proper calculation according
to the elements' positions.

Bug: 49471
Change-Id: I9093b2c684f557e9e562762b7ef25ced37b8848b
This commit is contained in:
Amir E. Aharoni
2013-07-02 10:30:48 +03:00
committed by Nikerabbit
parent f9498661a2
commit 900f5240bd

View File

@@ -286,23 +286,28 @@
$ulsSettingsTrigger.languagesettings( { $ulsSettingsTrigger.languagesettings( {
defaultModule: 'display', defaultModule: 'display',
onVisible: function () { onVisible: function () {
var left, var topRowHeight, caretHeight, caretWidth,
$caretBefore = $( '<span>' ).addClass( 'caret-before' ),
$caretAfter = $( '<span>' ).addClass( 'caret-after' ),
ulsTriggerWidth = $ulsSettingsTrigger.width(),
ulsTriggerOffset = $ulsSettingsTrigger.offset(); ulsTriggerOffset = $ulsSettingsTrigger.offset();
this.$window.addClass( 'callout' ); this.$window.addClass( 'callout' );
this.$window.prepend( $caretBefore, $caretAfter );
if ( rtlPage ) { if ( rtlPage ) {
left = ulsTriggerOffset.left - this.$window.width() - 30; caretWidth = parseInt( $caretBefore.css( 'border-left-width' ), '10' );
this.left = ulsTriggerOffset.left - this.$window.width() - caretWidth;
} else { } else {
left = ulsTriggerOffset.left + 30; caretWidth = parseInt( $caretBefore.css( 'border-right-width' ), '10' );
this.left = ulsTriggerOffset.left + ulsTriggerWidth + caretWidth;
} }
this.left = left; topRowHeight = this.$window.find( '.row' ).height();
this.top = ulsTriggerOffset.top - 50; caretHeight = parseInt( $caretBefore.css( 'top' ), '10' );
this.top = ulsTriggerOffset.top - topRowHeight - caretHeight / 2;
this.position(); this.position();
this.$window.prepend(
$( '<span>' ).addClass( 'caret-before' ),
$( '<span>' ).addClass( 'caret-after' )
);
} }
} ); } );
} else if ( anonMode ) { } else if ( anonMode ) {